8

NSubstituteを使用して、プロパティセッターに渡す値を取得する方法はありますか?

たとえば、次のインターフェイスがある場合:

public interface IStudent {
    int Id { set; }
    string Name { set; }
}

私が作成した代替品があると言う例:

var _studentSub = Substitute.For<IStudent>();

代替の「set」メソッドのいずれかが呼び出された場合に、値をインターセプトしてキャプチャする方法はありますか?

4

1 に答える 1

15

NSubstituteの標準的なアプローチは、ゲッターとセッターを備えたプロパティを持つことです。そうすると、代替のプロパティが期待どおりに機能します(つまり、設定されたものを取り戻すことができます)。

インターフェイスにセッターのみのプロパティが必要な場合は、次を使用して個々のプロパティの値を取得できますArg.Do

[Test]
public void Setter() {
    var sub = Substitute.For<IStudent>();
    var name = "";
    sub.Name = Arg.Do<string>(x => name = x);

    sub.Name = "Jane";

    Assert.AreEqual("Jane", name);
}
于 2011-10-03T21:18:16.083 に答える