Angular CLI测试和枚举

时间:2018-05-15 19:53:44

标签: angular angular-cli karma-jasmine

我正在使用Angular CLI的测试框架和枚举类型。我正在创建这样的枚举(在someenum.ts中):

private someEnum = SomeEnum.Val0;

并像这样使用它(在app.component.ts中):

ng serve

如果我使用this.someEnum = 0 /* Val0 */; 运行此代码,它运行正常,并且生成的js将其定义为:

ng test

应该如何。

但是,当我尝试使用ERROR in src/app/app.component.ts(10,14): error TS2304: Cannot find name 'SomeEnum'. 执行测试时,它会因编译错误而失败:

$urls = array(
    'https://www.smilesbycarroll.com/',
    'https://hurstbournedentalcare.com/',
    'https://www.dentalhc.com/',
    'https://www.springhurstdentistry.com/',
    'https://www.smilesbycarroll.com/',
    'www.drhugopavon.com/'
);

foreach ($urls as $url) {
    $tags = get_meta_tags($url);

    if (isset($tags['viewport'])) {
        echo "$url tag exist" . "</br>";
    }

    if (!isset($tags['viewport'])) {
        echo "$url tag doesnt exist" . "</br>";
    }
}

我认为这个问题与测试环境的打字稿配置有关,但是我无法弄清楚,有人对此有一个很好的解释吗?

1 个答案:

答案 0 :(得分:0)

我只是遇到了同样的问题。 您可以通过导出枚举来修复它。 例如:

languageEnums.ts

export const enum Languages {
  ENGLISH = "en-US",
  SWEDISH = "sv-SE"
}

app.component.ts

import { Languages } from '../assets/constants';

...

private language = Languages.ENGLISH; 

我在constants文件夹中创建了一个新的assets文件夹,其中包含所有枚举。 每个文件一个枚举! 您无需将它们导入app.module.ts.spec文件中。

此后,错误已修复。