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