内等待我有此代码与异步测试方法的任务
public class ClassToTest
{
private readonly IRepository repository;
public ClassToTest(DI GOES HERE){...}
public DoSomething()
{
Task.Run(async() => {
//some code
repository.ExecuteAsync();
}
}
}
public class Repository : IRepository
{
public Task ExecuteAsync()
{
using (var connection = new SqlConnection(DbConfiguration.DatabaseConnection))
{
return connection.ExecuteAsync(storedProcedure, parameters, commandType: CommandType.StoredProcedure, commandTimeout: Configuration.TransactionTimeout);
}
}
}
[Test]
public void TestMethod()
{
var repository = new Mock<IRepository>;
var classToTest = new ClassToTest();
classToTest.DoSomething();
repository.Veryfy(p => p.ExecuteAsync(), Times.Once());
}
测试失败,此消息
上模拟预期调用一次,但是0次:P =>页。 ExecuteAsync()
有谁知道为什么?
感谢
我怀疑“DI GOES HERE”可能会持有什么回事 – doctorlove
一些线索由于'DoSomething'其实异步不该”你等待该方法完成? – SteppingRazor
测试需要是异步的,模拟需要在被调用时设置为异步。 – Nkosi