NSubstitute - 介紹 屬性 與 多個回傳值
範例程式碼放在 GitHub
前言
屬性其實就是只需要指定回傳值,回傳值得部份可以有多個回傳值,一起介紹
屬性回傳值的設定
屬性回傳值用Returns
直接看程式碼
public interface ICalculator
{
string Mode { get; set; }
}
[TestMethod]
public void A02_1()
{
//arrange
//NSubstitute會產生一個ICalculator 假的實體出來
ICalculator calculator = Substitute.For<ICalculator>();
//設定假的實體當Mode時 回傳
calculator.Mode.Returns("A");
var expected = "A";
//act
var actual = calculator.Mode;
//assert
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void A02_2()
{
//arrange
//NSubstitute會產生一個ICalculator 假的實體出來
ICalculator calculator = Substitute.For<ICalculator>();
//設定假的實體當Mode時 依序回傳A,S,D
calculator.Mode.Returns("A", "S", "D");
var expected1 = "A";
var expected2 = "S";
var expected3 = "D";
//act
var actual1 = calculator.Mode;
var actual2 = calculator.Mode;
var actual3 = calculator.Mode;
//assert
Assert.AreEqual(expected1, actual1);
Assert.AreEqual(expected2, actual2);
Assert.AreEqual(expected3, actual3);
}
calculator.Mode.Returns("A");
Mode回傳A
calculator.Mode.Returns("A", "S", "D");
第一次呼叫回傳A 第二次回傳S 第三次回傳D ,超過三次都是回傳D
這樣的模式 一樣可以用在方法的回傳值喔
請特別注意 如果是分開設定的話是會後蓋前的
calculator.Mode.Returns("A");
calculator.Mode.Returns("S");
calculator.Mode.Returns("D");
這樣只會回傳D
方法跟屬性都可以塞假的回傳值,多多利用吧
結語
接下來會介紹方法被呼叫幾次 如何驗證
如果內容有誤請多鞭策謝謝