【发布时间】:2016-02-22 16:34:29
【问题描述】:
如果这是我做错的事情,或者是最小起订量或 NUnit 的问题,我正在尝试锻炼。我正在调用一个肥皂端点,而我的服务引用正在生成同步和异步方法。我正在拨打的电话类似于:
public async Task DoThisAsync(idnameobject myobj, int id)
{
await ws.DoSomethingAsync(myobj, id);
}
我正在设置我的最小起订量以返回回调,因此我可以将调用 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 在输出中。
奇怪的是,如果我从同步方法设置回调并更改我的方法来调用它,它不会失败。
如果我调用只有一个参数的异步方法,它也不会失败。
如果有人有任何想法,请告诉我,因为我不想因为我们的测试而改变我的方法,但理想情况下我希望我的测试能够确保我正确地调用网络服务。
【问题讨论】:
标签: c# asynchronous tdd nunit moq