2017-02-23 2 views
0

でテストするときすべての作品:は、私がどのように見えるUserDtoと呼ばれる単純なオブジェクトを持ってNancyFx

public void Create() 
{ 
    try 
    { 
     var user = this.Bind<UserDto> 
     // Create user using the user return variable 
    } 
    catch (Exception e) 
    { 
    } 
} 

私はそれを手動でテストするときは、すべてこのコードの作品は見つけるが、私は成功した私のGETメソッドで行うようにウェブアドレスを呼び出すいくつかの自動テストを作成したいです。

私の[のtestMethod]テストコードの内部には、次のようになります。

var bootstrapper = new DefaultNancyBootstrapper(); 
Browswer browser = new Browser(bootstrapper, to => to.Accept("application/json")); 

UserDto newUser = new UserDto 
{ 
    FirstName = "TestFirst", 
    LastName = "TestLast" 
}; 
string jsonUser = JsonConvert.SerializeObject(newUser); 

var result = browser.Post("/DB/users/create, with => 
{ 
    with.JsonBody(jsonUser); 
     // or 
    with.Body(jsonUser); 
} 

私は「with.JsonBody(jsonUser)を使用している場合は、私のコントローラコードが例外をスローし、私はとcatchブロックで終わりますエラー:「UserDto型にバインドできません」

「with.Body(jsonUser)」を使用すると、コントローラコードでエラーが発生することはありませんが、結果のユーザーオブジェクトはすべてのメンバに含まれますが、オブジェクトはnullです。ユーザーはFirstName & LastNameを示しますが、両方ともnullです。

私も使ってみました「with.Body(NEWUSERを);が、コンパイル時エラーが得た 『』文字列にUserDtoから変換できません

私は、コントローラのコードが動作する知っているので、と間違って何かがなければなりません。私のテストコードIは明らかに正しくNEWUSERオブジェクトをハンドオフないよ

任意の助けをいただければ幸いです

答えて

0

をこの問題を解決するために、私はテストメソッドに次のコードを使用する必要がありました:。。。

var result = browser.Post("/DB/SQLite/users/create", with => 
{ 
    with.Header("Content-Type", "application/json"); 
    with.Body(jsonUser); 
}); 

したがって、私はすべての違いを作ったヘッダーの指定がありませんでした。

関連する問題