Я пытаюсь проверить, что модель, возвращенная из моего приложения Nancy, как и ожидалось. Я следил за документами here, но всякий раз, когда я вызываю метод расширения GetModel<T>
, он выдает KeyNotFoundException
.Нэнси тестирование GetModel <T> throws 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' предназначен для получения модели за визуализированным html-представлением. Вы можете просто deserialise json для SanityModel, чтобы проверить это. –
albertjan