2017-03-17 2 views
0

프로젝트를위한 약간의 테스트 환경을 설정했습니다. 단위 테스트에는 mochachai을 사용해야합니다. 지금 내 브라우저에서 테스트 러너를 호출 할 때단일 테스트 파일 내에서 콘솔 및 브라우저에서 chai로 모카 테스트를 실행할 수 있습니까?

let assert = chai.assert; 

describe('simple test',() => { 
    it('should be equal',() => { 
     assert.equal(1, 1); 
    }); 
}); 

, 결과가 올바르게 표시됩니다 :이 간단한 테스트

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Mocha Tests</title> 
    <link rel="stylesheet" href="node_modules/mocha/mocha.css"> 
    </head> 
    <body> 
    <div id="mocha"></div> 
    <script src="node_modules/mocha/mocha.js"></script> 
    <script src="node_modules/chai/chai.js"></script> 
    <script>mocha.setup('bdd')</script> 
    <script src="test/chaiTest.js"></script> 
    <script>mocha.run();</script> 
    </body> 
</html> 

chaiTest.js 파일 continas : 나는 시험 주자로 html 파일을 설정 한 . 그것은 잘 작동합니다. 하지만 콘솔에서 mocha을 실행하면 해당 메시지가 chai is not defined으로 표시됩니다.

콘솔에서이 기능을 사용하려면 requirechai으로 테스트 파일의 첫 번째 줄에 추가하기 만하면됩니다.

let chai = require('chai'); 

지금 테스트 콘솔에서 잘 실행,하지만 브라우저에서 테스트를 실행할 때, 그것은 requireundefined 것을 알려줍니다.

저는 이러한 오류가 완전히 여기에 있습니다. 그것들은 정의되어 있지 않습니다. 그러나 mochachai으로 테스트를 작성하고 브라우저와 콘솔에서 테스트 할 수있는 방법이 있습니까?

브라우저 및 콘솔 용으로 두 개의 테스트 파일을 만들 수 있음을 알고 있습니다. 그러나 그것은 유지하기 어려울 것입니다. 그래서 두 환경에서 올바르게 실행되는 하나의 테스트 파일을 작성하고 싶습니다. ...

답변

1

지금 혼자 해결책을 찾았습니다. chai에 대한 구성 파일을 사용해야합니다. 내 경우처럼, 나는 그것을 chaiconf.js이라고 불렀다. 이 파일에는 기본 설정 인 chai을 쓸 수 있습니다. 이 파일은 각 테스트 전에 필요합니다. 내 chaiconf.js

:

let chai = require("chai"); 

// print stack trace on assertion errors 
chai.config.includeStack = true; 

// register globals 
global.AssertionError = chai.AssertionError; 
global.Assertion = chai.Assertion; 
global.expect = chai.expect; 
global.assert = chai.assert; 

// enable should style 
chai.should(); 

지금 모든 테스트에이 구성을 추가합니다. 당신이 콘솔에서 npm test를 사용할 때마다 chaiconf.js이 시험 전에해야합니다, 지금

"scripts": { 
    "test": "mocha --require chaiconf.js" 
}, 

브라우저처럼, chai 세계적으로 사용할 수 있도록 :이를 위해 package.json에서 스크립트 항목을 만들 수 있습니다.


구성 파일이없는 또 다른 방법은받을 인라인 결정을 사용하는 것입니다 chai :

let globChai = typeof require === 'undefined' ? chai : require('chai'); 
관련 문제