如何为测试正确添加自定义类型

时间:2017-07-20 08:17:16

标签: angular webpack karma-runner

我想根据webpack配置定义一个全局常量。 因此,我将常量DEBUG添加到DefinePlugin。

然后应该在某些代码中使用所述常量,在我的情况下,在服务内部。

执行npm run build时收到错误,无法找到名称DEBUG,因此我添加了custom-typings.d.ts来解决此问题。 但是在运行测试时我仍然会收到错误。

问题是,我如何定义自定义类型,因此业力也在使用它们?或者说不同,我怎样才能在运行测试时使用custom-typings.d.ts

./ webpack.config.js

    [...]
    new webpack.DefinePlugin({
        DEBUG: JSON.stringify(true)
    }),
    [...]

./ SRC /应用/服务/ SomeService

[...]
@Injectable()
export class SomeService {
    [...]
    private shouldStart() {
        return !(DEBUG);
    }
}

./ SRC /定制typings.d.ts

declare var DEBUG: boolean;

./ SRC / test.ts

[...]
TestBed.initTestEnvironment(
    BrowserDynamicTestingModule,
    platformBrowserDynamicTesting()
);

// load all specs in ./src .
const context = (require as any).context('./', true, /\.spec\.ts$/);
context.keys().map(context);

./ SRC / tsconfig.json

{
    "compilerOptions": {
        "baseUrl": "",
        [...]
    },
    "files": ["test.ts"],
    "include": ["**/*.spec.ts", "**/*.d.ts"]
}

运行npm test

时抛出错误
ERROR in [at-loader] ./src/app/some/some.service.ts:112:14
TS2304: Cannot find name 'DEBUG'.

(在我使用custom-typings.d.ts之前,这个错误发生在构建过程中)

编辑:添加了澄清路径以及更多信息

1 个答案:

答案 0 :(得分:0)

要回答您的具体项目,我必须查看custom-typings.d.ts文件在项目文件树中的位置。

要使* .d.ts文件起作用,它需要位于主入口点.ts文件的旁边。如果你在tsconfig.json中使用baseUrl配置,它应该在你定义的路径上。

如果文件位于正确的路径中,它应自动包含在您的业力构建中。