0

推論型を使用したNSubstituteのコンパイルに問題があります。ステートメントにreturn型以外のものを設定して.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は変更されていますか?

4

1 に答える 1

1

これは、NSubstitute1.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);
}

問題を示すために、さらにコードを投稿できますか?

于 2011-06-03T06:39:06.207 に答える