2013-05-08 40 views
1

我喜歡使用servicestack的IRestClient來測試我的api的簡單性,但是當有人發送不完整的對象時,我需要複製一個測試場景。舉例來說,如果我的DTO是這樣的:是否可以使用IRestClient發送原始json

public class Todo 
    { 
     public long? Id { get; set; } 
     public string Content { get; set; } 
     public int? Order { get; set; } 
     public bool? Done { get; set; } 
    } 

我希望做局部JSON一個PUT這樣的:

{"Id": 99999, "Order":1} 

如何發送只是上面使用JSON的客戶端。如果我使用鍵入的版本,客戶端將使用默認值發送整個對象。

回答

4

我認爲使用ServiceStack的Http Utils(鏈接到POST但適用於PUT)可能更容易PUT數據。

"http://localhost/todo" 
    .PutJsonToUrl(@"{""Id"":9999,""Order"":1}"); 

此外,我不確定你想要測試的是什麼。但是,如果你正在測試你的服務,請求(你的json字符串)將被反序列化(很確定使用ServiceStack.Text)到Todo類中,所以它將得到缺少字段缺省值的對象。請參閱下面的測試。

[Test] 
    public void TestJson() 
    { 
     var json = @"{""Id"": 99999, ""Order"":1}"; 

     var todo = new ServiceStack.Text.JsonSerializer<Todo>().DeserializeFromString(json); 

     Assert.IsNull(todo.Done); 
     Assert.IsNull(todo.Content); 
    } 
相關問題