mocha.js로 여러 파일의 테스트 결합
다음과 같이 여러 파일의 모든 테스트를 하나의 파일에 결합합니다.
describe('Controllers', function() {
describe('messages.js', function() {
require('./controllertests/messages').test(options);
})
describe('users.js', function() {
require('./controllertests/users').test(options);
})
})
나는 이것이 테스트에 참여하는 가장 좋은 방법이 아니라고 확신합니다.이 작업을 수행하는 방법에 대한 예제를 찾는 데 어려움이 있습니다.
여러를 포함 할 경우 에 당신의 describe
당신이 당신의 질문을하고있는 같은 계층 구조를, 무슨 일을 꽤 많이 사용하는 당신이 모카에 대한 사용자 정의 테스트 로더를 쓰고 싶어하지 않는 한. 사용자 정의 로더를 작성하는 것은 이미 가지고있는 것보다 코드를 더 명확하게 만들거나 어렵습니다.
다음은 몇 가지 사항을 변경하는 방법의 예입니다. test
이 예에서 하위 디렉토리는 다음과 같이 구성되어 있습니다.
.
└── test
├── a
│ └── a.js
├── b
│ └── b.js
├── common.js
└── top.js
top.js
:
function importTest(name, path) {
describe(name, function () {
require(path);
});
}
var common = require("./common");
describe("top", function () {
beforeEach(function () {
console.log("running something before each test");
});
importTest("a", './a/a');
importTest("b", './b/b');
after(function () {
console.log("after all tests");
});
});
이 importTest
기능은 describe(... require...
매번 전체 내용을 다시 입력하지 일련의 모듈을 가져 오는 반복을 처리 할 수있는 방법을 것입니다. common
모듈은 사용자가 테스트 스위트의 여러 모듈에서 사용할 필요 유지하기위한 것입니다. 나는 사용하지 top
않습니다. 필요한 경우에는 사용할 수 있습니다.
이 점에 나는 유의한다 beforeEach
각과에 등록 된 모든 one-테스트하기 전에 코드를 실행합니다 it
그들은 내부에-display할지 여부 describe
에 top
하거나에-display 가져온 모듈의 . 를 사용 --recursive
하면 beforeEach
코드를 각 모듈에 복사해야하거나 beforeEach
공통 모듈에서 서로 함수를 호출하는 각 모듈에 연결할 수 있습니다 .
또한 after
후크는 제품군의 모든 테스트 후에 실행됩니다 . 로 복제 할 수 없습니다 --recursive
. 각 모듈 --recursive
에의 코드 를 사용 하여 추가 after
하면 전체 테스트가 아닌 모듈 당 한 선택 실행 됩니다.
모든 테스트가 단일 top
제목 아래 에 표시 가능한 것은 사용하여 복제 할 수 없습니다 --recursive
. 으로 각 --recursive
파일에있을 수있는 파일 describe("top"
,이 새로운 만들 것입니다 top
.
common.js
:
var chai = require("chai");
var options = {
foo: "foo"
};
exports.options = options;
exports.chai = chai;
exports.assert = chai.assert;
이와 같은 이름 의 모듈을 사용하는 것은 여러 가지 작업을 반복 하지 않고 상태를 유지하지 않는 전역 읽기 전용 변수 또는 함수 를 수행하는 common
작업입니다 . 나는 thgaskell의 대답과 같이 오염되지 않는 것을 선호합니다. 이 가지고있는 진정으로 전역 적이며 코드가로드 할 수있는 세리 라이브러리에 액세스 할 수 있기 때문입니다. 이것은 내 코드에서 허용되는 것이 아닙니다.require
global
a/a.js
:
var common = require("../common");
var options = common.options;
var assert = common.assert;
it("blah a", function () {
console.log(options.foo);
assert.isTrue(false);
});
b/b.js
:
it("blah b", function () {});
이것이 질문과 직접적으로 연결되어 있지는 않지만 내가 말하는 대답은 다음과 있습니다.
$ mocha --recursive
"test"폴더의 하위 디렉터리에있는 모든 테스트를 실행합니다. 산뜻한. 로드하려는 테스트 목록을 유지하고 실제로 모든 것을 실행해야하는 시간을 절약합니다.
여러 테스트 파일을 실행하는 것을 방해하지 않습니다. 일반적으로 각 테스트는 다른 테스트의 결과에 존재하지 않는 테스트 변수 공유는 원하는 작업이 아닙니다.
다음은 테스트 파일을 구성하는 방법의 예입니다.
.
├── app.js
└── test
├── common.js
├── mocha.opts
│
├── controllers
│ ├── messages-controller.js
│ └── users-controller.js
│
└── modles
├── messages-model.js
└── users-model.js
그런 다음 mocha.opts
파일 내부 에서 --recursive
옵션 을 설정해야합니다 .
mocha.opts
--ui bdd
--recursive
파일에 포함 모든하려는 공통 모듈 이 있는 경우 해당 모듈을 파일에 추가 할 수 있습니다 common.js
. test
디렉토리 의 루트에있는 파일은 중첩 된 디렉토리의 파일보다 실행됩니다.
common.js
global.chai = require('chai');
global.assert = chai.assert;
global.expect = chai.expect;
chai.should();
chai.config.includeStack = true;
process.env.NODE_ENV = 'test';
// Include common modules from your application that will be used among multiple test suites.
global.myModule = require('../app/myModule');
나는 제안한 제안을 제안하고 제안한 방법과 제안하는 방법이 있습니다.
내가 작업중인 프로젝트는 잘 테스트되었으며 테스트는 계속 성장하고 있습니다. 내가 사용하는 결국 require
은 동기 때문에 그것을 건축에 너무 많은 변화없이 테스트를 작성하는 데 쉽게 비트 수 있기 때문에 :
// inside test/index.js
describe('V1 ROUTES', () => {
require('./controllers/claims.test');
require('./controllers/claimDocuments.test');
require('./controllers/claimPhotos.test');
require('./controllers/inspections.test');
require('./controllers/inspectionPhotos.test');
require('./controllers/versions.test');
require('./services/login.v1.test');
});
describe('V2 ROUTES', () => {
require('./services/login.v2.test');
require('./services/dec-image.v2.test');
});
describe('V3 ROUTES', () => {
require('./services/login.v3.test');
require('./services/getInspectionPhotosv3.test');
require('./services/getPolicyInfo.v3.test');
});
describe('ACTIONS', () => {
require('./actions/notifications.test');
});
describe( 'Running automation test, Please wait for all test to complete!'.red, function () {
var run = require( './Test.js' );
for ( var i = 0; i < 2; i++ ) {
run.badLogin();
run.loginLimited();
run.acceptJob();
run.drivingToJob();
run.arrivedAtJob();
run.towingJob();
run.arrivedDestination();
run.jobComplete();
run.restrictionLicensePlate();
run.newNodeMainMenu();
run.newNodeMainMenuToDrafts();
run.draftDelete();
run.resetAllData();
run.companyVehicle();
run.actionsScreenClockInOut();
run.mainMenuLogout();
run.loginAdmin();
run.actionsScreenLogout();
}
} );
참고 URL : https://stackoverflow.com/questions/24153261/joining-tests-from-multiple-files-with-mocha-js
'ProgramingTip' 카테고리의 다른 글
Windows10에서 VirtualBox가있는 Vagrant : "Rsync"를 PATH에서 사용할 수 없습니다. (0) | 2020.10.13 |
---|---|
존재하지 않는 속성을 처리하기 위해 hasattr () 대 try-except 블록 (0) | 2020.10.13 |
"계속해서 아무 키나 누르시겠습니까?"를 시뮬레이션하는 방법 (0) | 2020.10.12 |
Octave보다 MATLAB을 선호하는 이유 / 언제? (0) | 2020.10.12 |
예쁜 인쇄 std :: tuple (0) | 2020.10.12 |