【发布时间】:2011-11-30 01:13:46
【问题描述】:
下面是流畅的界面:
public interface IReporter<in T,out TResult>
{
IReporter<T, TResult> Add(T seed);
TResult Prepare();
}
在代码中使用为:
string errorReport = ErrorReporter.Add(exception).Prepare();
模拟测试用例:
With.Mocks(mockRepository)
.Expecting(() =>
{
Expect.Call(errorReporter.Add(null)).IgnoreArguments();
Expect.Call(errorReporter.Prepare()).Return(string.Empty);
Expect.Call(notifier.Notify(null)).IgnoreArguments().Return(true);
})
.Verify(() =>
{
ITransporter transporter = new Transporter
{
ExpectedArgsLength = 1,
Notifiers = notifiers,
ErrorReporter = errorReporter
};
transporter.Run(new string[] { });
});
错误:
Rhino.Mocks.Exceptions.ExpectationViolationException : IReporter`2.Prepare();预期 #1,实际 #0。
如果我评论 Expect.Call(errorReporter.Prepare()).Return(string.Empty);那么它的工作原理对我来说没有意义。
我错过了什么吗?请帮忙!
【问题讨论】:
-
如果我按如下方式破坏我的代码,那么测试运行良好。 ErrorReporter.Add(异常);字符串 errorReport = ErrorReporter.Prepare();而且我不想破坏我的代码
标签: c# .net mocking rhino-mocks rhino