【问题标题】:How to add custom typing correctly for tests如何为测试正确添加自定义类型
【发布时间】:2017-07-20 08:17:15
【问题描述】:

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

然后应该在某些代码中使用所述常量,在我的例子中是在服务中。

在执行npm run build 时,我收到一个错误,即找不到名称DEBUG,所以我添加了一个custom-typings.d.ts 解决了这个问题。 但是在运行测试时我仍然收到错误。

问题是,我如何定义自定义类型以便 karma 也使用它们?或者换一种说法,在运行测试时如何使用custom-typings.d.ts

./webpack.config.js

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

./src/app/services/SomeService

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

./src/custom-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 之前)

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

【问题讨论】:

    标签: angular webpack karma-runner


    【解决方案1】:

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

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

    如果文件在正确的路径中,它应该会自动包含在您的 karma 构建中。

    【讨论】:

    • 我在我的问题中添加了信息,希望有助于更接近解决方案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2018-07-21
    • 2022-11-29
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多