0

非同期データ アクセス コードを使用する mvc 5 コントローラーがあります。nUnit を使用して簡単なテストを作成しました。テストは完了しません。キャンセルするまで回転します。私はテストを正しく設定しました。コントローラーアクションが非同期としてマークされ、タスクを返すのを待っています。何か不足していますか?興味深いことに、moq を使用して依存関係をモックアウトするとテストは機能しますが、実際の依存関係を配置して統合テストを行うと、永遠にスピンします。

簡易テスト:

[Test]
    public async Task Get_WhenProductHasData_ReturnsView()
    {
        // Arrange
        ...

        // Act
        PartialViewResult actualResult = await _controller.Widget(_productId1) as PartialViewResult;


        // Assert
        Assert.That(actualResult, Is.Not.Null);
...
    }

そして、これが単純化されたコントローラーです

 public async Task<ActionResult> Widget(string productId)
    {

        ProductStats stats = await _statsService.GetProductStatsAsync(productId);


        return PartialView(stats);
    }
4

1 に答える 1

0

代わりにこれを試してください:

[Test]
public async Task Get_WhenProductHasData_ReturnsView()
{
    // Arrange
    ...

    // Act
    var result = await _controller.Widget(_productId1);


    // Assert
    Assert.That(result as PartialViewResult, Is.Not.Null);
}

「Act」行は単純であり、結果が型であるかどうかにかかわらず、その行でawaitingとしてキャストされることに注意してください。いずれにせよ、あなたが探しているものを手に入れましょう。PartialViewResultAssert.ThatnullPartialViewResultnull

于 2016-03-14T19:14:31.270 に答える