NSubstitute'Do'事件没有解雇

时间:2011-06-03 05:34:38

标签: c# nsubstitute

我在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有变化吗?

1 个答案:

答案 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);
}

您可以发布更多代码来显示问题吗?