我们目前有一个测试前端api调用的集成测试。该调用是异步的,因此我们强制它,直到调用准备好将结果与我们期望的结果进行比较。
然而,问题是该代码还包含另一个不等待的异步调用。所以我们有嵌套的异步调用。这也导致测试有时成功,有时失败(竞争条件)。
现在我们已经通过在代码中添加了Thread.Sleep(10000)来解决了这个问题。但是,这不是一个好的解决方案。
代码喜欢这样:
shinyjs::hide('compare_1')
有没有人就如何最好地解决这个问题提出建议?
答案 0 :(得分:1)
如果我理解正确SendMessage
返回任务,那么在继续测试之前,您应该能够等待它。
[TestMethod]
public async Task Integration_Test_Example()
{
var request = CreateRequest(@"testfile.xml");
var result = await target.SendMessage(request);
}
答案 1 :(得分:0)
您可以将测试更改为等待
[TestMethod]
public async Task Integration_Test_Example()
{
// Arrange
...
// Act
var request = CreateRequest(@"testfile.xml");
await target.SendMessage(request);
// Assert
...
}