2016-08-10 5 views
-1

[FromBody]属性を使用するAPIコントローラにPOST IHttpActionResultメソッドがあります。JSONデータを必要とするAPI Postイベントのローカルテスト

通常、コントローラをローカルでテストする場合は、そのURLに移動します。私はこのエラーを取得するため

しかし、私はこの方法でそれを行うことはできません。

The requested resource does not support http method 'GET'.

が、これはPOSTイベントであることを確認するために私のローカル環境のための方法はありますか? ありがとう!

+1

これらのプロパティを持つクラスの使用を検討する必要があります。 –

+0

@ DanielA.Whiteどういう意味ですか?名前と文字タイプ?どのように私はコントローラをテストすることができますか?ありがとう – SkyeBoniwell

+1

webTypeでは 'characterType'プロパティを使ってこのメソッドにルーティングする方法を教えてくれません。 –

答えて

1

まず、ASP.NET Web ApiはあなたのJSONをオブジェクトに逆シリアル化するのに十分なほどスマートなので、実際に文字列の値を期待しない限り、そこに型を入れることができます。

[Route("gameworld/generate")] 
public IHttpActionResult PostNewWorld([FromBody] WorldData newWorld) 

あなたはPostmanまたはSwaggerのようなツールを使って手動でそれをテストすることができますいずれかが、手動テストは、通常、一回行われ、その後、忘れられています。これにより、将来の変更を行い、エンドポイントの再テストを忘れ、APIを使用してアプリケーションを中断させる回帰バグが開かれます。

そのため、コードをチェックして回帰バグを防ぐために単体テストを書く必要があります。いくつかのプロジェクトでMyTested.WebApiを使用していました。ルーティングと実際の呼び出しの両方をテストできます。たとえば、次のようにテストされるべきものがたくさんあります

MyWebApi 
.Server() 
    .Working() 
    .WithHttpRequestMessage(req => req 
     .WithRequestUri("api/bugs") 
     .WithMethod(HttpMethod.Post) 
     .WithContent(myJsonString) 
    .ShouldReturnHttpResponseMessage() 
    .WithStatusCode(HttpStatusCode.Created) 
    .WithResponseModelOfType<BugReport>() 
    .Passing(r => r != null); 

、そうdocs必ずお読みください。

関連する問題