1
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>());
}
运行单元测试的结果 - 一个错误说明连接方法被调用两次,而不是三次。调试显示该方法被称为三次。NSusbtitute错误地计算了模拟调用的次数
它的工作原理通过。谢谢。嗯...似乎从NSubstitute的API角度来看非常不一致。这种行为远不是显而易见的。 – EngineerSpock
@EngineerSpock好吧,我发现了:) – Valentin