【发布时间】:2009-06-05 00:51:46
【问题描述】:
我正在尝试测试加载 UI 矩阵的方法是否正确加载。测试失败,除非我告诉模拟框架忽略传递的参数,给我以下消息:
Rhino.Mocks.Exceptions.ExpectationViolationException : ITimeSheetMatrixWidget.Load (Smack.ConstructionAdmin.Domain.TransferObjects.TimeSheetDtoAssembler +d__1);预期 #1,实际 #0。
有趣的是,该消息以某种方式接收了对另一个对象的调用,该对象从域模型中组装了 DTO——我不明白!
这里是 Sut 的接口/方法:
public interface ITimeSheetMatrixWidget : IMatrixWidget {
.....
void Load(IEnumerable<DynamicDisplayDto>activities);
.....
}
这是测试:
[Test]
public void SettingTheWidget_TriggersLoad_NonProjectActivities() {
var f = _getFacade();
// create test activities
TestDataFactory.SetupTestActivities(f);
Assert.That(f.NonProjectDtos.Count(), Is.GreaterThan(0));
// create the presenter
var filterService = MockRepository.GenerateStub<IProjectFilterService>();
var view = MockRepository.GenerateStub<ITimeSheetView>();
var timeSheetPresenter = new TimeSheetPresenter(f, filterService, view);
// inject the mocked widget & trigger the Load
var widget = MockRepository.GenerateMock<ITimeSheetMatrixWidget>();
timeSheetPresenter.ActivityMatrix = widget;
widget.AssertWasCalled(x => x.Load(f.NonProjectDtos),
mo =>mo.IgnoreArguments()); <-- ok, but not useful
//widget.AssertWasCalled(x => x.Load(f.NonProjectDtos)); <-- generates the Exception
}
有人可以解释失败消息吗?
顺便说一句,我今天早上确实在 Rhino Mocks 论坛上发布了这篇文章,但那里的流量看起来非常低。
感谢您的帮助! 浆果
【问题讨论】:
-
对我来说神秘的是方法的参数(TransferObjects.TimeSheetDtoAssembler +d__1),以及 Rhino 不期望的方法调用部分。 +d_1 是什么意思?
标签: c# unit-testing rhino-mocks