2017-02-23 112 views
0

У меня есть простой объект, называемый UserDto, который выглядит как:Использование Post при тестировании с NancyFx

public class UserDto 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

У меня есть контроллер Нэнси и упрощенный код, чтобы создать пользователь, не давая информацию пути, потому что все работы:

public void Create() 
{ 
    try 
    { 
     var user = this.Bind<UserDto> 
     // Create user using the user return variable 
    } 
    catch (Exception e) 
    { 
    } 
} 

Все это код работает найти, когда я проверить его вручную, но я хотел бы создать несколько автоматизированных тестов, которые будут вызываться веб-адрес, как я успешно делать с моими методами GET.

Внутренности моего [TestMethod] тестовый код выглядит следующим образом:

var bootstrapper = new DefaultNancyBootstrapper(); 
Browswer browser = new Browser(bootstrapper, to => to.Accept("application/json")); 

UserDto newUser = new UserDto 
{ 
    FirstName = "TestFirst", 
    LastName = "TestLast" 
}; 
string jsonUser = JsonConvert.SerializeObject(newUser); 

var result = browser.Post("/DB/users/create, with => 
{ 
    with.JsonBody(jsonUser); 
     // or 
    with.Body(jsonUser); 
} 

Если я использую «with.JsonBody (jsonUser), мой код контроллера бросает исключение, и я в конечном итоге в улове блок с Ошибка: «Не удалось привязать к типу UserDto»

Если я использую «with.Body (jsonUser), мой код контроллера НЕ выдает ошибку, но результирующий объект пользователя существует со всеми его членами, но все члены объект имеет значение null. пользователь показывает FirstName & LastName, но оба они равны нулю.

Я даже попытался с помощью «with.Body (NEWUSER), но получил ошибка времени компиляции„Не удается преобразовать из UserDto в строку“

Я знаю, что код контроллера работает, так что там должно быть что-то не так с. ... мой тестовый код, я, очевидно, не передавая от объекта NEWUSER правильно

Любая помощь будет принята с благодарностью

ответ

0

чтобы решить эту проблему, я должен был использовать следующий код в методе испытаний:

var result = browser.Post("/DB/SQLite/users/create", with => 
{ 
    with.Header("Content-Type", "application/json"); 
    with.Body(jsonUser); 
}); 

Поэтому мне не хватало заголовка, что имело значение.

 Смежные вопросы

  • Нет связанных вопросов^_^