に私はこのようになりますApiControllerメソッドを持って次のように... [OK]を、結果をチェックするためのためのユニットテストApiController方法ではないHttpStatusCode列挙
[HttpPost]
public IHttpActionResult Post([FromBody] GloballyEnumeratedMessage gem)
{
var result = _gemPublisher.PublishGem(gem);
if (result.Success)
{
return Ok();
}
return new StatusCodeResult((HttpStatusCode)422, this);
}
私のテストがあります。これにPostメソッドを変更することを決めた私は、他の潜在的な障害のためBadRequestを確保したかった
[TestMethod]
public void Post_InvalidGem_Returns400()
{
_gemPublisherMock.Setup(v => v.PublishGem(It.IsAny<GloballyEnumeratedMessage>())).Returns(ResultStatus.FromFailure());
var controller = new PublishGemController(_gemPublisherMock.Object);
// Act
IHttpActionResult actionResult = controller.Post(It.IsAny<GloballyEnumeratedMessage>());
// Assert
Assert.IsInstanceOfType(actionResult, typeof(BadRequestResult));
}
:
[TestMethod]
public void Post_ValidGem_Returns200()
{
_gemPublisherMock.Setup(v => v.PublishGem(It.IsAny<GloballyEnumeratedMessage>())).Returns(ResultStatus.FromSuccess());
var controller = new PublishGemController(_gemPublisherMock.Object);
// Act
IHttpActionResult actionResult = controller.Post(It.IsAny<GloballyEnumeratedMessage>());
// Assert
Assert.IsInstanceOfType(actionResult, typeof(OkResult));
}
は、私は422を返していました前に、私はBadRequestを返していましたし、テストでは、このように見えましたパブリッシュが失敗した場合は422を返します。私のテストで422のステータスコードがどのように見えるのでしょうか?
EDIT:以下、コントローラとのテストは、私はあなたが達成したいものを信じて何を質問
[TestMethod]
public void Post_InvalidGem_Returns422()
{
_gemPublisherMock.Setup(v => v.PublishGem(It.IsAny<GloballyEnumeratedMessage>())).Returns(ResultStatus.FromFailure());
var controller = new PublishGemController(_gemPublisherMock.Object);
// Act
IHttpActionResult actionResult = controller.Post(It.IsAny<GloballyEnumeratedMessage>());
var result = (StatusCodeResult) actionResult;
// Assert
Assert.IsInstanceOfType(actionResult, typeof(StatusCodeResult));
Assert.AreEqual(422, (int)result.StatusCode);
}
結果が 'StatusCodeResult'であり、ステータスが422であることを確認できませんか? –
ありがとう、どうすればいいですか?何かのように: 'var contentResult = actionResult as StatusCodeResult; Assert.AreEqual(422、(int)contentResult.StatusCode); '? – Robodude
これを解決策として提出して、それを解決するとマークします。 – Robodude