pjo*_*336 7 mocha.js chai typescript visual-studio-code ts-node
有没有人知道在打字稿中用ts-node设置测试的正确方法是让Mocha和Chai和Sinon全部被识别,而不需要在每个测试文件中手动导入?我有项目中包含的所有类型定义,包括mocha,sinon,chai.我有以下(它正常工作和运行测试):
mocha.opts:
--require ts-node/register
--option value spec/**/*.spec.ts
--require spec/bootstrap/test-setup.js
--recursive
--retries 0
--sort
--timeout 10000
--ui bdd
Run Code Online (Sandbox Code Playgroud)
package.json中的测试脚本:
"test": "yarn build && NODE_ENV=test nyc mocha ./spec/bootstrap/test-helper.js --opts ./spec/mocha.opts"
Run Code Online (Sandbox Code Playgroud)
我有2个辅助方法(出于某种原因,我必须在JS中做)
测试setup.js:
require('mocha');
var chai = require('chai');
chai.use(require('chai-as-promised'));
chai.use(require('sinon-chai'));
global.expect = chai.expect;
global.Promise = require('bluebird');
Run Code Online (Sandbox Code Playgroud)
测试helper.js:
const sinon = require('sinon');
const _ = require('lodash');
const db = require('../../src/models');
before(() => {
global.sandbox = sinon.sandbox.create();
});
afterEach(function () {
global.sandbox.restore();
});
after(() => {
db.default.sequelize.close();
});
Run Code Online (Sandbox Code Playgroud)
最后一个用于测试设置的垃圾规范:
describe('app', () => {
const bar = {
foo: () => 1,
};
it('asserts 1 === 1', () => {
const stub = sandbox.stub(bar, 'foo').returns(3);
const result = bar.foo();
expect(result).to.eq(3);
expect(stub).to.have.callCount(1);
expect(1).to.eq(1);
});
it('tests stubs reset', () => {
expect(bar.foo()).to.eq(1);
});
});
Run Code Online (Sandbox Code Playgroud)
这里有几个笔记:
require('mocha')它显示错误高亮显示it,并describe为好,但同样仍然运行.但我再次强调,这是有效的,它只是感觉可疑的hacky,我想弄清楚我是否可以A)在TS中完成所有这一切,而不是拥有JS设置文件,并且B)修复在这种情况下突出显示的错误ts错误.
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |