在回调模拟设置

时间:2018-02-05 23:00:59

标签: c# unit-testing moq manualresetevent

我在测试中使用ManualResetEvent类。

基本上,我想在调用特定函数时调用Set()方法。 这看起来像:

var mre = new ManualResetEvent(false);
mockObj.Setup(dmc => dmc.Foo(param1, param2, param3)).Callback(mre.Set()); //Error here.

但是,我收到错误说:

  

无法从bool转换为' System.Action'

当我尝试设置mre时。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

错误消息显示全部

  

无法从bool转换为'System.Action'

Callback需要lambda表达式/ Action

//...
var mre = new ManualResetEvent(false);
mockObj
    .Setup(dmc => dmc.Foo(param1, param2, param3))
    .Callback(() => mre.Set()); //<-- Callback requires an Action
//...

参考Moq Quickstart以更好地了解如何使用模拟框架。