簡體   English   中英

驗證是否已使用 Moq 設置屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM