验证 属性 是否已使用 Moq 设置
Verify that a property has been set with Moq
我正在尝试学习如何使用 Moq,但无法正常工作:我有一个带有 TextBox 的界面和一个使用该界面的 Presenter class。我希望能够检查 class 中的某些方法是否已将 TextBox 的文本 属性 设置为特定值。这是我试过的:
public界面IView
{ 文本框 MyTextBox { 得到; } }
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
并制作模拟的 return。然后在断言阶段,您可以针对真实 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);
我正在尝试学习如何使用 Moq,但无法正常工作:我有一个带有 TextBox 的界面和一个使用该界面的 Presenter class。我希望能够检查 class 中的某些方法是否已将 TextBox 的文本 属性 设置为特定值。这是我试过的:
public界面IView { 文本框 MyTextBox { 得到; } }
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
并制作模拟的 return。然后在断言阶段,您可以针对真实 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);