我正在尝试设置模拟对象的公共属性,但测试无法运行。 View是Presenter的公共财产。
[TestMethod]
public void CustomerSearchPresenter_OnSearch_ValidateFromCustomerId_ExpectFalseWithInvalidNumber()
{
var customerSearchPresenter = new CustomerSearchPresenter();
customerSearchPresenter.View = MockRepository.GenerateMock<ICustomerSearchView>();
customerSearchPresenter.View.FromCustomerId = "test"; --> it is not working
//Act
customerSearchPresenter.OnSearch();
//Assert
Assert.IsFalse(customerSearchPresenter.View.IsValidFromCustomerId);
}
答案 0 :(得分:1)
我认为你不能直接设置模拟视图的属性。请记住,大多数模拟框架都会为您需要的 ICustomerSearchView
生成动态代理。
这意味着所有字段,属性,方法设置等都需要通过模拟框架,以便它可以在内部为您安排代理。最后,模拟框架公开的对象的行为与您设置它的方式相同。
因此,在这种情况下,您希望设置视图的属性,其值应使人们在访问该属性时,需要返回特定值。
通常,模拟框架的属性设置代码如下:
// create the mock for the view.
var viewMock = new Mock<ICustomerSearchView>();
// setup the property value
viewMock.SetupGet(v => v.FromCustomerId).Returns("test");
customerSearchPresenter.View = viewMock.Object; // the actual View.
尝试使用相同的代码..