我要简化一下问题:
在我的测试中,我使用了一个模拟对象(我嘲笑它,因为它调用了一个bdd),我将参数提供给另一个对象(不是模拟的)的方法,其目的是修改这个模拟对象的属性。 / p>
ModifyingClass myModifyingClass = new ModifyingClass();
Mock<ToModifyClass> mockedClass = new Mock<ToModifyClass>();
mockedClass.Setup(mc => mc.name).Returns("Test1");
myModifyingClass.modify(mockedClass.Object);
方法modify
然后尝试设置模拟对象的属性名称,但它不起作用,所以也许这是正常的行为,但我真的需要测试是否所有这些工作以及方法是否modify
根据需要设置属性。
答案 0 :(得分:0)
在Moq中,需要设置吸气剂。
mockedClass.SetupGet(mc => mc.name).Returns("Test1");
答案 1 :(得分:0)
如评论中所述,您需要以不同方式设置模拟类,以保留传递给属性的值。
在模拟上存储所有属性(在Silverlight上不可用):
mock.SetupAllProperties();
提供的示例测试看起来像......
//Arrange
var myModifyingClass = new ModifyingClass();
var mockedClass = new Mock<ToModifyClass>();
mockedClass.SetupAllProperties(); //<-- this will allow property changes to be retained.
var model = mockedClass.Object;
//set the property now that it can be set
model.name = "Test1";
var expected = "expected value here";
//Act
myModifyingClass.modify(model);
//Assert
var actual = model.name;
Assert.AreEqual(expected, actual);
//... other assertions