我试图发现如何将async和await关键字应用于我的xUnit测试.我使用的是xUnit 1.9和Async CTP 1.3.这是我的测试用例
我有一个接口,它指定一个异步方法调用
public interface IDoStuffAsync
{
Task AnAsyncMethod(string value);
}
Run Code Online (Sandbox Code Playgroud)
我有一个使用接口并调用异步方法的类
public class UseAnAsyncThing
{
private readonly IDoStuffAsync _doStuffAsync;
public UseAnAsyncThing(IDoStuffAsync doStuffAsync)
{
_doStuffAsync = doStuffAsync;
}
public async Task DoThatAsyncOperation(string theValue)
{
await _doStuffAsync.AnAsyncMethod(theValue);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我希望检查方法DoThatAsyncOperation是否使用正确的值调用方法,因此我模拟了接口并使用Moq来验证调用
[Fact]
public async void The_test_will_pass_even_though_it_should_fail()
{
var mock = new Mock<IDoStuffAsync>();
var sut = new UseAnAsyncThing(mock.Object);
mock.Setup(x => x.AnAsyncMethod(It.IsAny<string>()));
await sut.DoThatAsyncOperation("test");
// This won't throw a Moq.MockExcpetion so the test appears to pass
// However it does …Run Code Online (Sandbox Code Playgroud)