我有一个模拟对象,该对象作为构造函数参数传递给另一个对象。
如何测试被 mock 对象的属性已被调用?这是我当前正在使用的代码:
INewContactAttributes newContact = MockRepository.GenerateMock<INewContactAttributes>();
newContact.Stub(x => x.Forenames).Return("One Two Three");
someobject.ConsumeContact(newContact);
newContact.AssertWasCalled(x => { var dummy = x.Forenames; });
除在“someobject”中多次使用Forenames属性上的getter之外,此方法有效。那就是当我收到“Rhino.Mocks.Exceptions.ExpectationViolationException:INewContactAttributes.get_Forenames();预期为#1,实际为#2。”
只需使用
newContact.AssertWasCalled(x => { var dummy = x.Forenames; }, options => options.Repeat.Any());
不起作用,并给出以下错误:
“期望已从等待的期望列表中删除,您是否调用了Repeat.Any()?AssertWasCalled()不支持此功能。”
那么我该如何满足多次通话呢?
最佳答案
newContact.AssertWasCalled(x => { var dummy = x.Forenames; }, options => options.Repeat.AtLeastOnce());
Repeat.Any
不能与AssertWasCalled
一起使用,因为0会算作任何数字...因此,如果未调用AsserWasCalled
,即使未调用ojit_code也会返回TRUE。
关于c# - 使用AAA在属性获取程序上进行Rhino Mocks AssertWasCalled(多次),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/729267/