我在NSubstitute编译时使用其推理类型存在问题。当我在.Do()
语句中使用多个返回类型进行设置,然后尝试使用计数器查看它被调用的次数时,计数器不会更新。
我正在嘲笑一个返回字符串的方法(它基本上是File.ReadAllText()
的抽象):
int fileReadCount =0;
IFileDataSource fs = Substitute.For<IFileDataSource>();
fs.When(x => x.ReadAllText(Arg.Any<string>())).Do(x =>
{
fileReadCount++;
return "test";
});
文档中提到的替代形式似乎也有效:
fs.ReadAllText("test").ReturnsForAnyArgs(x =>
{
fileReadCount++;
return "test";
});
我的计数器永远不会改变。
我正在关注http://nsubstitute.github.com/help/return-from-function/中的示例,所以我不明白我做错了什么 - API有变化吗?
答案 0 :(得分:1)
这在NSubstitute 1.1中适用于我:
public interface IFileDataSource {
string ReadAllText(string s);
}
[Test]
public void TestName() {
int fileReadCount = 0;
var fs = Substitute.For<IFileDataSource>();
fs.ReadAllText("test").ReturnsForAnyArgs(x =>
{
fileReadCount++;
return "test";
});
fs.ReadAllText("sdf");
fs.ReadAllText("sdf");
Assert.AreEqual(fileReadCount, 2);
}
您可以发布更多代码来显示问题吗?