NSubstitute, перехватывающий вызов "setter" только свойства - PullRequest
7 голосов
/ 03 октября 2011

С NSubstitute, есть ли способ получить значение, которое вы передаете установщику свойств?

например. если у меня есть следующий интерфейс:

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

Скажите, что у меня есть замена, например:

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

Можно ли как-то перехватить и перехватить значение, если какой-либо из "установленных" методов заменителя вызван?

1 Ответ

13 голосов
/ 04 октября 2011

Стандартный подход для 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);
}
...