2013-05-08 3 views
1

Мне нравится простота использования IRestClient servicestack для проверки моего api, но мне нужно реплицировать тестовый сценарий, когда кто-то отправляет неполный объект. Например, если мой DTO выглядит следующим образом:Можно ли отправить raw json с IRestClient

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

И я хочу сделать PUT с частичной JSON как это:

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

Как отправить только выше с клиентом JSon. Если я использую типизированную версию, клиент отправляет весь объект по умолчанию.

ответ

4

Я думаю, что было бы проще использовать ServiceStack's Http Utils (ссылка на POST, но применяется к 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); 
    } 
Смежные вопросы