私はサークルで回っています。だから私のWebApiは、私がデバッグで実行しているときに、ブラウザに必要な出力を返します。 FirefoxとIEは私が必要とするリストを表示します。しかし、私がMockとAutofacを使ってユニットテストをしようとしているときには、HttpResponseMessage
私は戻ってきていません。私はそれが別の文脈やそれに類するものに戻っていると感じる。私は完全には分からないので、質問しています。私はグーグルとAutofacのドキュメントを使って、以下のユニットテストをまとめました。ユニットテストHttpResponseMessage(AutofacとMoqを使用)
WebApiMethod(InScrapController
内に含まれ、_WebScrapSprocService
コンストラクタでAutofacによって注入される)
public HttpResponseMessage GetFormItemsByFormNumber(int FormNumber)
{
HttpResponseMessage response;
try
{
//response = Request.CreateResponse(HttpStatusCode.OK, _WebScrapSprocService.GetFormItemsByFormNumber(FormNumber),new MediaTypeHeaderValue("application/json"));
response = Request.CreateResponse(HttpStatusCode.OK, new MediaTypeHeaderValue("application/json"));
response.Content = new StringContent(JsonConvert.SerializeObject(_WebScrapSprocService.GetFormItemsByFormNumber(FormNumber)),Encoding.UTF8, "application/json");
} catch (Exception e)
{
response = Request.CreateResponse(HttpStatusCode.InternalServerError, new StringContent(e.Message), new MediaTypeHeaderValue("application/json"));
}
//Checking if bob knows anything about this...
string bob = response.Content.ReadAsStringAsync().Result;
return response;
}
ユニットテスト
public void GetFormItemsByFormNumber()
{
using (var mock = AutoMock.GetLoose())
{
var Service = mock.Mock<IWebScrapSprocService>().Setup(x => x.GetFormItemsByFormNumber(3392));
var service = mock.Create<InScrapController>();
service.Request = new HttpRequestMessage();
service.Request.SetConfiguration(new HttpConfiguration());
var HttpResponse = service.Request.CreateResponse(HttpStatusCode.OK, Service, new MediaTypeHeaderValue("application/json"));
var response = service.GetFormItemsByFormNumber(3392);
mock.Mock<IWebScrapSprocService>().Verify(x => x.GetFormItemsByFormNumber(3392));
Assert.AreEqual(HttpResponse, response);
}
}
を単に 'ストリングボブ= response.Content.ReadAsStringAsync()を除去するための任意の理由を更新する結果、'私が午前問題はReadAsStringAsyncは単にmockableされていないこと形ステム –
私は応答内容を嘲笑せず、ただ応答を設定しました –