【发布时间】:2016-06-19 03:25:35
【问题描述】:
我正在尝试设置一个项目并使用mocha 和mjackson/expect 库运行测试以进行断言。我要测试的代码是:
// inside src/lib/math.ts
export function sum(a: number, b: number): number {
return a + b;
}
我的测试如下:
// inside src/tests/math.tests.ts
/// <reference path="../../typings/main/ambient/mocha/mocha.d.ts" />
/// <reference path="../../typings/main/ambient/expect/expect.d.ts" />
import expect from 'expect';
import {sum} from '../lib/math';
describe('sum', () => {
it('should add two numbers', () => {
expect(sum(1, 2)).toEqual(3);
});
});
我可以使用以下命令通过 tsc 编译代码:
find src -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir .
但是,当我使用以下命令从项目目录运行 mocha 时:
mocha tests
我在测试中看到以下错误:
TypeError: expect_1.default is not a function
当我打开 math.tests.ts 的编译版本时,我在转译代码的顶部看到以下行:
var expect_1 = require('expect');
这很好,符合预期。但是,当我查看调用 expect 的测试时,我看到以下行:
expect_1.default(math_1.sum(1, 2)).toEqual(3);
现在这行代码似乎是错误的。 expect 库被捆绑为 ES6 模块,expect 函数是模块的默认导出。
但是,TypeScript 编译器已将代码发送到我的测试中,它尝试访问 expect_1 上的 default 属性,这是从 expect 库导入的。 expect_1 引用本身是我在测试中需要的默认导出函数,而不是无效的 expect_1.default。
需要注意的一点是,如果我修改我的 math.tests.ts 以使用旧的 require 语法导入 expect。一切正常。
请帮助我了解我缺少什么。
附:我使用 TypeScript 1.8.2 和 Node v4.3.1。
【问题讨论】:
-
对我来说
const expect = require('expect');工作
标签: javascript module typescript typescript1.8