【问题标题】:angular-cli tests fail after creating shared module创建共享模块后 angular-cli 测试失败
【发布时间】:2016-10-15 04:41:43
【问题描述】:

我只是添加了一个带有 SharedComponent 的共享模块,并在主应用程序组件中使用了该组件:

<acs-shared></acs-shared>

该组件所做的只是显示“Hello, world!”在组件上使用属性:

<h1>Hello, {{name}}!</h1>

当使用npm start 运行项目时,这一切正常,但现在运行npm test 失败,$(npm bin)/karma start ./karma.conf.js 也是如此。第一个失败是它无法创建组件,因为它无法识别“acs-shared”元素。是否需要做一些特别的事情来测试使用其他组件或模块的组件?

Chrome 54.0.2840 (Windows 10 0.0.0) App: AngularCliStarter should create the app FAILED
    'acs-shared' is not a known element:

项目在github上可用:https://github.com/JasonGoemaat/angular-cli-starter

【问题讨论】:

    标签: angular karma-jasmine angular-cli


    【解决方案1】:

    您需要将SharedModule 导入TestBed 配置。您使用 TestBed 所做的就像为测试环境配置一个 @NgModule 从头开始

    TestBed.configureTestingModule({
      imports: [ SharedModule ],
      declarations: [
        AppComponent
      ],
      providers: []
    });
    

    【讨论】:

    • 太棒了,完全有道理!我导入了“AppModule”并且它起作用了。是否有任何理由不包含组件实际所在的模块?似乎这是一个更好的测试,因为我可能忘记在我的 AppModule 中导入 SharedModule 并且似乎测试会成功,但应用程序无法运行。你也可以跳过声明。
    • 就我个人而言,这只是偏好,我尽量控制所有测试并限制不必要的变量。就 AppModule 而言,我从不将其导入到测试测试中。 AppModule 发生了太多事情。这是您导入一堆提供程序、BroswerModule、RoutingModules 和一堆您不需要的其他东西的地方。即使在共享模块的情况下,如果它发生的事情太多,我可能只是在测试床中声明组件,而不是导入共享模块。同样,这只是我的偏好。每个人都会有自己的
    • 不过,你测试的越多,我想你就会开始弄清楚自己的风格和偏好。
    • 感谢您的输入,我想我所说的可能更适合端到端测试,或者应该是模块本身的测试,它们导入和导出正确的东西。跨度>
    • @PaulSamsotha 给这个人一个铃铛!!!我是 Angular 的新手,我无法弄清楚这一点。阅读了无数文章,但仍然没有接近。然后我遇到了这个隐藏的宝石并拥有了灯泡时刻。非常感谢保罗!
    猜你喜欢
    • 2019-04-08
    • 2014-10-26
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多