[英]Verify that a property has been set with Moq
我正在嘗試學習如何使用 Moq 並且無法讓它工作:我有一個帶有 TextBox 的接口和一個使用該接口的 Presenter 類。 我希望能夠檢查該類中的某些方法是否使用特定值設置了 TextBox 的文本屬性。 這是我嘗試過的:
公共接口 IView { TextBox MyTextBox { get; } }
public class Presenter
{
private IView _view;
public Presenter(IView view)
{ _view = view; }
public void Foo(string txt)
{
// try to set the Text in MyTextBox:
// this gives a NullReferenceException => _view.MyTextBox.Text = txt;
}
}
在我的測試中,我想做這樣的事情:
[Test]
public void Test_For_TestBoxText_Set()
{
var mockView = new Mock<IView>();
var presenter = new Presenter(mockView.Object);
presenter.Foo("bar");
mockView.VerifySet(v => v.MyTextBox.Text = "bar");
}
` 誰能指出我正確的方向並解釋為什么這不起作用?
您可以創建一個真正的TextBox
並使模擬返回它。 然后在斷言階段,您可以針對真正的TextBox
進行測試。 下面是一個例子:
//Arrange
Mock<IView> moq = new Mock<IView>();
var textbox = new TextBox();
moq.Setup(x => x.MyTextBox).Returns(textbox);
Presenter presenter = new Presenter(moq.Object);
//Act
presenter.Foo("test");
//Assert
Assert.AreEqual("test", textbox.Text);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.