1
と私はSessionId
下記のようなウェブAPIコントローラメソッドはタイプ「文字列」<IHttpActionResult>匿名型
[HttpPost]
[Route("init")]
[ApiMeter("search_init")]
public async Task<IHttpActionResult> InitiateAsync(SearchInitRequest query,
CancellationToken cancellationToken)
{
Validations.EnsureValid(query, new SearchRequestValidator());
string sessionId = await Service.InitiateSearchAsync(query, cancellationToken);
return Ok(new { sessionId });
}
である持っていると私は
以下のようなテストケースを持っています[Fact]
public void GetSearchInit_Success_Valid()
{
var mockCarService = new Mock<ICarService>();
using (new AmbientContextScope(GetCarCallContext()))
{
var request = Data.DataProvider.TestDataProvider.GetJsonResult<CarSearchInitRequest>(
SearchInitScenarioRequests.CarSearchInitSuccess);
var response = Data.DataProvider.TestDataProvider.GetResponse<CarSearchInitResponse>(
SearchInitScenarioResponse.CarSearchInitSuccess);
mockCarService.Setup(f => f.InitiateSearchAsync(request, CancellationToken.None))
.Returns(Task.FromResult(response.SessionId));
SearchController controller = new SearchController(mockCarService.Object);
var result = controller.InitiateAsync(request, CancellationToken.None).Result;
var status = result as OkNegotiatedContentResult<string>;
Assert.NotNull(status.Content);
}
}
このテストケースでは、ステータスがnull
となっています。しかしデバッグ中にstatus.Content
の中にSessionId
のプロパティがあるのがわかりますが、これは匿名型なのでその値を読み取ることはできません。
私も
var status = result as OkNegotiatedContentResult<object>;
で試してみましたが、まだここで運