我正在尝试组织一个新的 typescript 项目,该项目具有单元测试,也用 TS 编写,在 Mocha 测试运行器中运行。
我的项目具有以下目录约定:
/project/src/ for server-side code (java)
/project/test/ server's tests
/project/resources/ client-side code (typescript)
/project/test-resources/ typescript tests.
现在我在位于 resources/many/levels/schema.ts 的打字稿文件中有一个打字稿模块架构
我在一个打字稿文件中为 mocha 测试运行器编写了它的测试:test-resources/many/levels/schemaTest.ts
问题是打字稿编译器无法使用以下导入语法找到模式模块:
TC2307 找不到模块架构
schemaTest.ts(版本 1):
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../../../resources/many/levels/schema.ts" />
import s = require('schema');
schemaTest.ts(版本 2):
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../../../resources/many/levels/schema.ts" />
import {Schema, SchemaFactory} from 'schema';
最后,以下版本编译但会导致运行时错误,因为模块不在 ../../../resources/many/level 而是位于 dist 目录中
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../../../resources/many/levels/schema.ts" />
import {Schema, SchemaFactory} from '../../../resources/many/levels/schema';
架构.ts:
module Schema {
export interface Schema {
getName() : string;
getColumnByIndex(index : number) : Column;
getColumnById(id : string) : Column;
getNumberOfColumns(): number;
}
export class SchemaFactory{
...
build() : Schema {...}
}
}
我正在将我的测试和 src 文件编译到单个 dist 目录(不理想),并希望从那里运行测试。
我正在使用标志 --module commonjs 进行编译。
如果重要的话,我正在使用 IntelliJ 15 / WebStorm(并使用它的 mocha、node 和 tsc 插件)
我的 Schema 模块设置不正确吗?它应该是内部/外部模块吗?我的测试应该在同一个命名空间中吗?
提前致谢!