是否可以使用IRestClient发送原始json

时间:2013-05-08 02:37:20

标签: servicestack

我喜欢使用servicestack的IRestClient来测试我的api的简单性,但是当有人发送一个不完整的对象时,我需要复制一个测试场景。例如,如果我的dto看起来像这样:

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客户端发送上述内容。如果我使用键入的版本,则客户端使用默认值发送整个对象。

1 个答案:

答案 0 :(得分:4)

我认为使用ServiceStack的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);
    }