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