Я тестирую функцию, которая на самом деле печатает на консоли в конце.Я проверяю это на stdin и утверждаю соответственно.Но если я сделаю это, то процесс завершится только в том случае, если я нажму клавишу ввода на клавиатуре или вызову process.exit(0)
в after()
самого внешнего describe()
.Теперь, если я вызову process.exit(0)
, то даже если тестовые случаи не пройдены, я все равно получу статус выхода 0, как мне выйти с кодом выхода mocha?Или есть лучший способ добиться этого (я не собираюсь менять свой код, поскольку это инструмент CLI).
Мой код тестирования:
describe('Testing createTestExecutionForTestCases(testExecutionData)', () => {
const testExecutionData = {
info: {
summary: 'summary',
},
tests: [{
testKey: 'KEY-11',
comment: 'failed',
status: 'FAIL',
}],
};
before(() => {
const basePath = `${JIRAConfig.host}:${JIRAConfig.port}`;
process.env.TOKEN = 'fake_token';
const issueSearch = nock(basePath);
issueSearch
.post(`${JIRAConfig.testExecutionEndpoint}`, () => true).reply(200, {
testExecIssue: {
id: '11410',
key: 'KEY-1',
self: 'http://172.16.201.132:8080/rest/api/2/issue/11410',
},
})
.post(`${JIRAConfig.testExecutionEndpoint}`, () => true).reply(404, {
error: 'ERROR',
errorMessage: 'Summary could not be empty',
});
});
after(() => {
nock.cleanAll();
});
it('Should create test execution issue in JIRA', async () => {
await createTestExecutionForTestCases(testExecutionData);
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
const chunk = process.stdin.read();
if (chunk !== null) {
expect(chunk).to.be.a('string');
expect(chunk).to.equal('Test Execution created with ID KEY-1');
}
});
});
it('Should not create test execution issue if any of the mandatory is not present', async () => {
await createTestExecutionForTestCases(testExecutionData);
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
const chunk = process.stdin.read();
if (chunk !== null) {
expect(chunk).to.be.a('string');
expect(chunk).to.equal('Unable to create Test Execution');
}
});
});
});