1
我试图徒劳地断言来自南希端点的Json响应。在南希测试REST API
这里的被测模块:
public MyModule()
{
Get["/mypath", true] = async (parameters, ct) =>
{
...
return something.ToDictionary(x => x.Key, x => x.Value);
};
}
如何编写一个测试,验证在响应中词典的内容?
我已经尝试了所有种类的东西,比如:
var bootstrapper = new MyBootstrapper();
var browser = new Browser(bootstrapper);
var result = browser.Get("/mypath",
with =>
{
with.Accept(new MediaRange("application/json"));
});
Assert.AreEqual(HttpStatusCode.OK, result.StatusCode, "Body: " + Encoding.UTF8.GetString(result.Body.ToArray()));
Assert.That(result.GetModel<IDictionary<string, string>>()[SOME_KEY], Is.EqualTo("expected value"));
我已经和尝试没有兴田MediaRange,并试图了解在字典可以在响应中找到,但能似乎无处不在。 result.GetModel
似乎并不包含结果字典。
我能看到结果的唯一方法就是看Encoding.UTF8.GetString(result.Body.ToArray())
。这给出了原始的JSON。但是:
- 手动解码的字节数组是丑陋的,
- 我宁愿一个JSON对象,而不是一个字符串。这可能吗?
谢谢,我稍后再看看! –
GetModel和DeserializeJson 扩展方法有什么区别? –
reckface