C# 当存在“时调用资产”;这";参数
我正在尝试测试Caliburn.Micro方法,C# 当存在“时调用资产”;这";参数,c#,unit-testing,nunit,caliburn.micro,rhino-mocks,C#,Unit Testing,Nunit,Caliburn.micro,Rhino Mocks,我正在尝试测试Caliburn.Micro方法,PublishOnUnitRead()被调用: public static class EventAggregatorExtensions { ... public static void PublishOnUIThread(this IEventAggregator eventAggregator, object message); ... } 我试着这样测试: //assert _eventAggregator
PublishOnUnitRead()
被调用:
public static class EventAggregatorExtensions
{
...
public static void PublishOnUIThread(this IEventAggregator eventAggregator, object message);
...
}
我试着这样测试:
//assert
_eventAggregator.AssertWasCalled(x =>
x.PublishOnUIThread(Arg<object>
.Is.Anything));
//断言
_eventAggregator.AssertWasCalled(x=>
x、 PublishOnUIThread(Arg
.是任何东西);
但是得到错误:
System.InvalidOperationException:使用Arg
时,所有参数
必须使用Arg.Is、Arg.Text、Arg.List、Arg.Ref定义
或参数输出
。需要2个参数,已定义1个
但是,我不能强制该方法采用2个参数。我是测试新手,所以我不知道如何解决这个问题 根据框架文档,定义如下
public interface IEventAggregator {
bool HandlerExistsFor(Type messageType);
void Subscribe(object subscriber);
void Unsubscribe(object subscriber);
void Publish(object message, Action<Action> marshal);
}
不可能在Rhino中模拟扩展方法,但是可以将它们包装在接口中并模拟接口
//assert
_eventAggregator.AssertWasCalled(x =>
x.Publish(Arg<object>.Is.Anything, Arg<Action<Action>>.Is.Anything));