2015-03-13 3 views
0

Я пытаюсь построить тест, который будет проверять сообщение об ошибке, полученное для плохого запроса к API. Я использую node-jasmine и frisby для записи тестов, но имею проблемы с доступом к значениям JSON с точечной нотацией.Доступ к значениям JSON с помощью jasmine-node/frisby

var frisby = require('frisby'); 
    frisby.create('JSON Error') 
     .put('url', { 
     }, {json: true}) 
     .expectStatus(400) 
     .expectHeaderContains('content-type', 'application/json') 
     .auth('username', 'password') 
     .afterJSON(function (body) { 
     //changed values 
     expect(body.error.newEmail).toMatch('missing-required-key'), 
     expect(body.error.oldEmail).toMatch('missing-required-key') 
     }) 
    .toss(); 

Ожидаемый ответ JSON тело

{ 
"error": { 
"newEmail": "missing-required-key", 
"oldEmail": "missing-required-key" 
} 
} 

Результаты тестов в следующей ошибки:

Cannot read property newEmail of undefined 

я написал подобный тест в Почтальон, который работает, я пытаюсь преобразовать эти тесты в то, что может быть использовано node.js.

Почтальон рабочий пример:

var body = JSON.parse(responseBody); 

//error messages 

var newEmailError = body.error.newEmail; 
var oldEmailError = body.error.oldEmail; 

tests["New Email Error Message"] = newEmailError === "missing-required-key"; 
tests["Old Email Error Message"] = oldEmailError === "missing-required-key"; 

ответ

0

Оказывается конечной поставки неверен, проверьте действительно с правильной конечной точки!

-1

вам нужно тоже сделать:

frisby.create('GET JSON data with parameters') 
    .get('your_json_url.com') 
    .expectStatus(200) 
    .expectHeader('Content-Type', 'application/json') 
    .expectJSON({ 'error': { 
      'newEmail': 'missing-required-key' 
     }}) 
    .toss(); 
+0

Спасибо за этот фрагмент кода, который может обеспечить некоторую ограниченную краткосрочную помощь. Правильное объяснение [значительно улучшило бы] (// meta.stackexchange.com/q/114762) его долгосрочную ценность, показав * почему * это хорошее решение проблемы и сделало бы его более полезным для будущих читателей с другие, подобные вопросы. Пожалуйста, отредактируйте свой ответ, чтобы добавить какое-то объяснение, включая сделанные вами предположения. –