NSubstitute - ref 或 out 的參數
範例程式碼放在 GitHub
前言
當用到ref 或 out 的參數時,要如何去設定呢?
Returns的變化
直接看程式碼
public class Calculator
{
public virtual string Add(int a, int b, out int c, ref bool d)
{
c = a + b;
d = c > 0;
return c.ToString();
}
}
[TestMethod]
public void test1()
{
//arrange
var calculator = Substitute.For<Calculator>();
var c = 0;
var d = false;
calculator.Add(3, 6, out c, ref d).Returns(x =>
{
x[2] = 9;//注意第一個參數是x[0],所以是X[2]
x[3] = true;
return "9";
});
var expected = "9";
var expectedOut = 9;
var expectedRef = true;
//act
var actual = calculator.Add(3, 6, out c, ref d);
//assert
Assert.AreEqual(expected, actual);
Assert.AreEqual(expectedOut, c);
Assert.AreEqual(expectedRef, d);
}
重點是Returns ( ReturnsForAnyArgs ) 可以去指定第幾個參數的回傳值
x[2] = 9;
x[3] = true;
return "9";
請注意 這邊是x[2]
是指第三個參數喔
最後return 就是方法的回傳值
這邊除了Set 之外 也是可以Get
x[2] = (int)x[0]+ (int)x[1]
就是 x[2] = 3 + 6
結語
假設void 方法用 out 參數 這篇的範例 是不成功的
就要用when do 來解決
所以 接下來介紹 when do的應用
參考文章
[C#.NET] 單元測試 - 如何使用 NSubstitute 測試 void 方法的 out / ref
如果內容有誤請多鞭策謝謝