C# 当存在“时调用资产”;这";参数

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

我正在尝试测试Caliburn.Micro方法,
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));