我是MOQ和Mocking的新手。
假設我有這樣的一類,與變化的值一個void方法:MOQ模擬無效方法,改變字段值
public class Sample
{
public virtual int Number { get; set; }
public virtual void Check(int a)
{
this.Number = a > 10 ? this.Number = 100 : this.Number = 200;
}
}
我想測試的空白方法,以確保它是改變局部場Number
。
[Fact]
public void TestSampleClass()
{
var sut = new Mock<Sample>();
sut.Setup(s => s.Number).Returns(50);
sut.Setup(s => s.Check(It.IsAny<int>())).Callback(
(int testNumber) =>
{
if (testNumber > 10)
{
sut.Setup(s => s.Number).Returns(100);
}
else
{
sut.Setup(s => s.Number).Returns(200);
}
});
}
看來,如果我打印sut.Object.Number
它給人的初始值,而不是無效呼叫之後更新的一個方法不改變值100或200 ...... 。
我不知道你的問題的答案,但我注意到'this.Number = a> 10? this.Number = 100:this.Number = 200;'可以縮短爲'this.Number = a> 10? 100:200;'。 –
我真的不需要嘲笑這堂課,這看起來是完全可以測試的,不需要使用嘲諷 – Kritner
是@Kritner這很容易測試而不嘲笑。但是我的原創課太複雜了,不適合這裏。我想簡化我的問題找到一個helloworld解決方案 –