Я пытаюсь проверить, что модель, возвращенная из моего приложения Нэнси, соответствует ожиданиям. Я следил за документацией здесь но всякий раз, когда я вызываю метод расширения GetModel<T>
, он выдает KeyNotFoundException
.
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
Я знаю, что означает ошибка, но я не понимаю, почему она возникает.
Вот мой модуль
public class SanityModule : NancyModule
{
public SanityModule()
{
Get["sanity-check"] = _ => Negotiate.WithModel(new SanityViewModel { Id = 1 })
.WithStatusCode(HttpStatusCode.OK);
}
}
моя модель просмотра
public class SanityViewModel
{
public int Id { get; set; }
}
и вот мой тест
[TestFixture]
public class SanityModuleTests
{
[Test]
public void Sanity_Check()
{
// Arrange
var browser = new Browser(with =>
{
with.Module<SanityModule>();
with.ViewFactory<TestingViewFactory>();
});
// Act
var result = browser.Get("/sanity-check", with =>
{
with.HttpRequest();
with.Header("accept", "application/json");
});
var model = result.GetModel<SanityViewModel>();
// Asset
model.Id.ShouldBeEquivalentTo(1);
}
}
Отладка этого теста показывает, что модуль срабатывает и завершается нормально. Запуск приложения показывает, что ответ соответствует ожидаемому.
Может кто-нибудь пролить некоторый свет на это?
GetModel<T>
предназначен для получения модели за визуализированным html-представлением. Вы можете просто десериализовать json в SanityModel, чтобы проверить его. - person albertjan   schedule 04.09.2014