私はプロジェクトをセットアップし、mocha
とアサーションのためのライブラリmjackson/expect
でテストを実行しようとしています。TypeScriptのデフォルトインポートに失敗しました
// 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でコードをコンパイルすることができる午前:
しかし、私がmocha
を私のプロジェクトディレクトリから次のコマンドを使って実行した:
mocha tests
私は私のテストでは、次のエラーを参照してください。私は私のmath.tests.ts
のコンパイルされたバージョンを開くと
TypeError: expect_1.default is not a function
が、私はtranspiledコードの先頭に次の行を参照してください。
var expect_1 = require('expect');
これは正常な動作です。今、このコード行が間違っているようだ
expect_1.default(math_1.sum(1, 2)).toEqual(3);
:私はexpect
が呼び出されるテストの中を見たときにしかし、私は次の行を参照してください。 expect
ライブラリはES6モジュールとしてバンドルされており、expect
関数はモジュールからのデフォルトの書き出しです。
しかし、タイプ・スクリプト・コンパイラは、ライブラリからのインポートであるexpect_1
のdefault
属性にアクセスしようとするコードに私のテストにコードを出しました。 expect_1
参照自体は、私のテストで必要とするデフォルトのエクスポート関数であり、無効なexpect_1.default
ではありません。
math.tests.ts
をexpect
という古い構文を使用してインポートするように変更した場合の注意点は、require
構文を使用しています。すべてうまく動作します。
私が紛失しているものを理解するのを手伝ってください。
P.S.私はノードv4.3.1でTypeScript 1.8.2を使用します。
私のために 'const expect = require( 'expect');'は動作します – tutok