首页 > 解决方案 > NSubstitute.Exceptions.CouldNotSetReturnDueToTypeMismatchException:无法为 IDisposable.Dispose 返回 Task`1 类型的值(预期类型为 Void)

问题描述

我有我想通过替换并返回用户列表来进行单元测试的代码:

var users = await _context.MyCollection.FindAsync(filter).Result.ToListAsync();

这是我使用 nsubstitute 进行的单元测试:

 // Arrange
 var user = new MyUsers{ Id = "1" };

 var cursorSub = Substitute.For<IAsyncCursor<MyCollection>>();
 cursorSub.MoveNext().Returns(true);
 cursorSub.Current.Returns(MyUsers);

 var filter = Substitute.For<FilterDefinition<MyCollection>>();
 _context.MyCollection.FindAsync(filter).Returns(cursorSub); 
 
 // Act
 await MyMethod.ExecuteAsync(useCaseRequest);

当我调试时:

_context.MyCollection.FindAsync(filter) 的替换实际上有效,因为它在示例中返回 cursorSub。但是,当它到达获得结果“.Result.ToListAsync();”的代码部分时 列表变为空。你能帮我替换我的代码吗?

标签: unit-testingasynchronousasync-awaitmockingnsubstitute

解决方案


推荐阅读