类型“ By”的参数不能分配给类型“ Predicate <DebugElement>”的参数

时间:2019-07-16 13:31:09

标签: angular typescript jasmine protractor

我正在尝试量角器(5.4.2),并尝试测试Angular组件。 我创建了以下测试,灵感来自Joe Eames的Unit testing in Angular course

课程中的(有效)示例 enter image description here

我的(错误的)代码

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DetailsComponent } from './details.component';
import { By } from 'protractor';

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

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [DetailsComponent]
        })
            .compileComponents();
    }));

    beforeEach(() => {
        fixture = TestBed.createComponent(DetailsComponent);

        fixture.detectChanges();
    });

     it('contains 3 titles', () => {
        expect(fixture.debugElement.queryAll(By.css('.card-title')).length).toBe(3);
    });
});

但是,在测试方法的 .query 调用中发生以下类型错误:

  

类型'By'的参数不能分配给'谓词'类型的参数。

我不明白为什么会出现此错误,因为我的代码看起来像该示例。

1 个答案:

答案 0 :(得分:1)

发生此错误是因为您是从By而不是protractor模块中导入了@angular/platform-browser

将此import { By } from 'protractor';更改为import { By } from '@angular/platform-browser';