【发布时间】:2017-04-26 10:19:08
【问题描述】:
public class Device
{
private readonly IProtocol _protocol;
public Device(IProtocol protocol)
{
_protocol = protocol;
}
public bool Connect(string port)
{
for (int i = 0; i < 3; i++)
{
if (_protocol.Connect(port))
return true;
}
return false;
}
}
public interface IProtocol
{
bool Connect(string port);
}
[Test]
public void Connect_FailedThrice_ThreeTries()
{
IProtocol provider = Substitute.For<IProtocol>();
provider.Connect(Arg.Any<string>()).Returns(false);
var sut = new Device(provider);
sut.Connect(Arg.Any<string>());
provider.Received(3).Connect(Arg.Any<string>());
}
运行单元测试的结果 - 错误提示 Connect 方法被调用了两次,而不是三次。调试显示该方法被调用了三次。
【问题讨论】:
标签: c# unit-testing mocking nsubstitute