我试图锻炼,如果它是我做错了,或者它在moq或NUnit中的问题。我正在调用一个肥皂端点,我的服务引用正在生成同步和异步方法。我正在通话,看起来像:Moq异步回调失败,带有多个参数
public async Task DoThisAsync(idnameobject myobj, int id)
{
await ws.DoSomethingAsync(myobj, id);
}
我建立我的MOQ返回回调,这样我就可以interegate参数我呼吁与Web服务。我的测试看起来像:
var callback = new idnameobject();
wsMock
.SetUp(w => w.DoSomethingAsync(It.IsAny<idnameobject>(), It.IsAny<int>())
.Callback<idnameobject, int>((obj, id) => callback = obj);
await myservice.DoThisAsync(myobj, id);
Assert.That(callback.Id, Is.EqualTo(myobj.Id));
在这一点上,叫我的方法,它不包含在堆栈跟踪的任何信息时,我得到一个空引用异常。我所有的是Exception thrown: 'System.AggregateException' in mscorlib.dll
在输出。
奇怪的是,如果我从同步方法设置回调并更改我的方法来调用它,它不会失败。
如果我调用只有一个参数的异步方法,它也不会失败。
如果任何人有任何想法,请让我知道,因为我不想改变我的方法,因为我们的测试,但理想情况下,我希望我的测试,以确保我正确调用Web服务。
很好的解释和解决我的问题。希望我能把它标记为你的答案。 – mikesigs
对不起,这确实回答了我的问题,只是稍微缓慢地将其标记为 – Tom