【问题标题】:Angular 7 test case throwing broadcaster errorAngular 7 测试用例抛出广播错误
【发布时间】:2019-10-10 00:36:30
【问题描述】:

在运行测试用例时会抛出此错误。 几乎添加了所有必需的组件和服务以及其他依赖项,尽管它在 Angular 中运行测试用例时抛出错误 &

Error: StaticInjectorError(DynamicTestModule)[Broadcaster]: 
  StaticInjectorError(Platform: core)[Broadcaster]: 
    NullInjectorError: No provider for Broadcaster!

这是规范文件代码

import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {HttpClientModule} from '@angular/common/http';
import {RouterModule, Routes} from '@angular/router';
import { FormsModule } from '@angular/forms';
import {APP_BASE_HREF} from '@angular/common';


import {CustomiseMenuComponent} from './customise-menu.component';

describe('CustomiseMenuComponent', () => {
    let component: CustomiseMenuComponent;
    let fixture: ComponentFixture<CustomiseMenuComponent>;

    const appRoutes: Routes = [
        {path: 'designs', component: CustomiseMenuComponent}
    ];

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [
                CustomiseMenuComponent,
            ],
            imports: [
                FormsModule,
                HttpClientModule,
                RouterModule.forRoot(appRoutes)
            ],
            providers: [
                {provide: APP_BASE_HREF, useValue : '/' }
            ]
        }).compileComponents();
    }));

    beforeEach(() => {
        fixture = TestBed.createComponent(CustomiseMenuComponent);
        component = fixture.componentInstance;
        fixture.detectChanges();
    });

    it('should create', () => {
        expect(component).toBeTruthy();
    });
});

【问题讨论】:

  • 我们需要您的组件和模块代码来帮助您。请提供minimal reproducible example
  • Broadcaster 是您使用该名称或某种名称创建的服务吗?我找不到任何具有该名称的 Angular 参考表单。
  • @GonzaloMuro:是的,我提供了这项服务,我得到了解决方案,感谢您的关注。

标签: angular jasmine karma-jasmine angular7 testcase


【解决方案1】:

这可能是关键短语:“No provider for Broadcaster!”。我想,您应该将 Broadcaster 添加到“AppModule”文件中的“providers”数组中。

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ...
    Broadcaster,
    ...
  ],
  bootstrap: [
    AppComponent
  ]

更新:如果您正在使用此服务,也许您可​​以在此处查看文档: https://github.com/ranbuch/ng-broadcaster

【讨论】:

  • 您能详细说明一下吗?请给出语法?
  • 我不知道该怎么说——不熟悉 Angular 测试。应将“Broadcaster”服务添加到应用(或模块)主“.module.ts”文件中的“providers”数组中。
猜你喜欢
  • 2012-11-21
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多