2017-12-06 23 views
0

야간 시계를 사용하여 통합 테스트를 수행합니다. 일부 UI 자동화가 제대로 작동합니다. 결국 UI 작업 결과가 맞으면 Rest API를 사용하여 확인하고 싶습니다. 나는 chai가 nightwatch에 inbuild 인 것에 따라 거기에서 chai를 사용하려고 노력한다. 상자 야간 시계는 expect.element ('# element') ... 만 지원하지만 예상 (true) .to.be.true 스타일이 필요합니다.nightwatch.js 테스트에서 chai의 expect 사용 방법

(가) 예상되는 경우
const { expect } = require('chai'); 

module.exports = { 
    'Add Rules (Tester 1)' : browser => { 
     ... some tests 
    } 
    after: browser => { 
     let username = 'username'; 
     let password = 'xxxxxxxx'; 

     fetchRulesFromJira({ browser, username, password }).then(rules => { 
      expect(rules.length).to.equal(2); 
      browser.end(); 
     }); 
    } 
}; 

출력이 어떻게 든 유용하지만, 좋은하지

(node:3594) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError: expected 3 to equal 2

입니다 실패

이 내 테스트 파일의 (일부)입니다. 테스트가 성공하면 출력이 없습니다.

nightwatch.js에서 결과를 인쇄하거나 테스트 결과를 표준 출력으로 출력하는 방법은 무엇입니까?

+0

약속을 반환해야합니다 : 'return fetchRulesFromJira (브라우저, 사용자 이름, 암호). then (....); ' – Troopers

+0

불행히도 그렇게하지 않습니다. – Michael

답변

0

나는 단순한 요소 이상으로 expect 어설 션을 사용할 수 있으면 좋을 것이라고 동의합니다. 이 대신에 사용하는 해결 방법은 browser.verify.ok()입니다. 그런 다음 테스트가 실제로 수행중인 작업을 설명하는 메시지를 추가하여 결과를 볼 때 어떤 테스트인지 확인할 수 있습니다. 비록,

Passed [ok]: there are 2 rules 

나는 위의 방법은 약속의 거부를 처리 할 생각하지 않는다 :이 같은 메시지가 표시됩니다

browser.verify.ok(rules.length === 2, 'there are 2 rules'); 

콘솔에서 : 귀하의 경우는이 같은 것 전혀 문제가되지 않습니다. then 뒤에 catch을 넣으면 처리되지 않은 약속 거부로 문제가 해결됩니다. 이것은 거부 된 약속을 처리하는 올바른 방법입니다.

fetchRulesFromJira({ browser, username, password }).then(rules => { 
     expect(rules.length).to.equal(2); 
     browser.end(); 
    }) 
    .catch(err => { 
     browser.assert.fail(err); 
    }); 

또한 코드를 살펴본 후에 마지막으로 언급 할 항목이 하나 더 있습니다. after 방법으로 어설 션을하려고합니다. 모든 테스트가 완료되면 실행됩니다. 일반적으로 어떤 종류의 정리 또는 분해에는 after 함수를 사용합니다. 나는 야간 시계에 아직 익숙하지 않지만 어설 션을 넣는 것이 모범 사례라고 생각하지 않습니다. 또한, 나는 심지어 그들은 before[Each] 또는 after[Each] 함수에서 작동하는지 잘 모르겠다. 테스트 함수 안에 그 어설 션을 넣으면 콘솔에서 출력을보기 시작해야합니다.

0

현재 해결책은 try/catch에 expect을 캡슐화하고 nightwatch로 오류를 호출하는 것이 아닙니다. 완벽하게 보이지만, 출력이 꽤 괜찮하지 않습니다

const { expect } = require('chai'); 

module.exports = { 
    'Add Rules (Tester 1)' : browser => { 
     ... some tests 
    } 
    after: browser => { 
     let username = 'username'; 
     let password = 'xxxxxxxx'; 

     fetchRulesFromJira({ browser, username, password }).then(rules => { 
      try { 
       expect(rules.length).to.equal(2); 
      } catch(error) { 
       browser.assert.fail(error); 
      } 

      browser.end(); 
     }); 
    } 
}; 

.