3
使用Moq模拟单元测试的异步方法
我正在测试用于进行Web API调用的服务的方法。HttpClient如果我还本地运行Web服务(位于解决方案中的另一个项目中),则对单元测试使用正常工作就可以了。 但是,当我签入更改时,构建服务器将无法访问Web服务,因此测试将失败。 我为单元测试设计了一种解决方法,方法是创建一个IHttpClient接口并实现一个在应用程序中使用的版本。对于单元测试,我制作了一个模拟版本,其中包含一个模拟的异步post方法。这是我遇到问题的地方。我想HttpStatusResult为此特定测试返回确定。对于另一个类似的测试,我将返回不好的结果。 测试将运行,但永远不会完成。它挂在等待。我是异步编程,委托和Moq本身的新手,我一直在搜索SO和Google一段时间以学习新事物,但我似乎仍然无法克服这个问题。 这是我要测试的方法: public async Task<bool> QueueNotificationAsync(IHttpClient client, Email email) { // do stuff try { // The test hangs here, never returning HttpResponseMessage response = await client.PostAsync(uri, content); // more logic here } // more stuff } 这是我的单元测试方法: [TestMethod] public async Task QueueNotificationAsync_Completes_With_ValidEmail() { Email email …