【问题标题】:Angular2 Jasmine test case Can't resolve all parameters for NavBarComponent: (?, ?)Angular2 Jasmine 测试用例无法解析 NavBarComponent 的所有参数:(?,?)
【发布时间】:2017-07-03 11:30:50
【问题描述】:

我正在开发 Angular2 Angular CLI 项目,我正在为组件编写 Jasmine 测试用例,我的项目的组件依赖于服务(它们是组件构造函数的参数)。当我尝试为组件编写测试时,我得到 Can't resolve all parameters for NavBarComponent: (?, ?)

我已经模拟了服务并且能够为服务编写测试。但是,对于组件测试用例,我遇到了上述问题。

很高兴知道如何解决此问题。

这是我的代码

export class NavBarComponent implements OnInit {
      constructor(private sanitizer: DomSanitizer,private service:       AppService){

        }
}

规格文件

describe('NavBarComponent component ', () => {

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [FormsModule, HttpModule],
            declarations: [NavBarComponent],
            providers: [{ provide: Router, useClass: class { navigate = jasmine.createSpy('navigate'); }}, 
            {provide: AppService, useClass: AppService},
            {provide: DomSanitizer, useClass: DomSanitizer}],
            schemas: [NO_ERRORS_SCHEMA]
        });
    });


     it('check the number of li elements in NavBarComponent component',
        async(() => {
            TestBed
                .compileComponents()
                .then(() => {
                    let fixture = TestBed.createComponent(NavBarComponent);
                    let userDOMEl = fixture.debugElement.nativeElement;
                    expect(userDOMEl.querySelectorAll('li').length).toEqual(17);
                });
        }));


});

【问题讨论】:

  • 添加你的构造函数并测试你尝试过的。提问时始终添加有意义的必需代码

标签: angular unit-testing karma-jasmine


【解决方案1】:

当我的tsconfig.json 将编译器选项emitDecoratorMetadata 设置为false 并切换到true 时,我遇到了类似的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2017-07-14
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多