2015-03-13 25 views
0

我正在嘗試構建一個測試,用於驗證接收到的API請求錯誤的錯誤消息。我正在使用node-jasmine和frisby編寫測試,但無法使用點符號訪問JSON值。使用jasmine-node/frisby訪問JSON值

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)其長期價值其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 – 2018-03-07 12:46:35