我正试图从我的模拟对象中调用一个事件。我这样做:
importObject.Raise(x => x.RequestImportLevel += null, false, false, true, importLevel);
需要通过引用传递的最后一个参数。所以,我得到了一个例外
参数#4是System.Int16但是 应该是System.Int16&
我该怎么做才能解决这个问题?
如果问题出在Rhino Mocks中 - 还有其他框架可以干净利落地支持这种开箱即用吗?
答案 0 :(得分:0)
这个对象实现了一个接口,所以我刚创建了一个虚拟类,让它继承自IEventWithRefParameter并引入了一个像
这样的函数 public virtual void RaiseRequestImportLevelEvent(bool hasYc, bool hasWc, bool hasDc, ref short chosenLevel)
{
if (RequestImportLevel != null)
{
RequestImportLevel(hasYc, hasWc, hasDc, ref chosenLevel);
}
}
现在我在我的测试中使用了这个虚拟类的实例,当我想要引发一个事件时,我只是调用这个函数。
不是一个干净的解决方案,但至少它可以解决问题。