85

私は Web API を開発しています。私が思いついたテストの 1 つは、クライアントが物理テスト ID (物理テストは私が探しているリソースです) を使用して GET 操作を行い、その物理テストが見つからない場合です。 、Web API は 404 ステータスを返す必要があります。

現在、テストに moq フレームワークを使用しており、次のコードがあります。

[TestMethod]
public void then_if_physical_test_not_found_return_not_found_status()
{
    var unitOfWork = new Mock<IUnitOfWork>();
    var repository = new Mock<IRepository<PhysicalTest>>();
    repository.Setup(r => r.FindById(It.IsAny<int>())).Returns();
    unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object);
    var pt = new PhysicalTestResource(unitOfWork.Object);
    HttpResponseMessage<PhysicalTest> response = pt.GetPhysicalTest(43);
    Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode)
}

リソースが見つからない場合に実際の API メソッドが返す null オブジェクトを返すには、Returns() メソッドが必要です。

Returns() メソッドのパラメーターとして null を送信しようとしましたが、成功しませんでした。

4

5 に答える 5

253

エラーの内容は示していませんが、これは機能するはずです。

unitOfWork.Setup(m => m.PhysicalTests).Returns((IRepository<PhysicalTest>)null);

で呼び出そうとしたと思われます。これにより、コンパイラがオーバーロードされ、どのメソッドを呼び出す必要があるかがわからないReturns(null)ため、コンパイラが文句を言います。Returns特定の型にキャストすると、あいまいさがなくなります。

于 2011-10-27T17:23:37.807 に答える