加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – Angular2 / Jasmine期望为null使浏览器崩溃

发布时间:2020-12-17 17:58:57 所属栏目:安全 来源:网络整理
导读:我在测试我的一个组件时遇到了一些麻烦.测试如下: describe('SmpEventsNewCompactEventComponent',() = { const specService: SmpSpecService = new SmpSpecService(); describe('Component rendering',() = { let componentInstance: any; let componentFi
我在测试我的一个组件时遇到了一些麻烦.测试如下:

describe('SmpEventsNewCompactEventComponent',() => {

  const specService: SmpSpecService = new SmpSpecService();

  describe('Component rendering',() => {
    let componentInstance: any;
    let componentFixture: ComponentFixture<any>;
    let cssSelector: string;

    beforeEach(() => {
      TestBed.configureTestingModule({
        imports: [
          MaterialModule.forRoot()
        ],declarations: [
          SmpEventsCompactEventComponent,SmpEventsAddressComponent
        ],providers: [
          { provide: SMP_OT_HELPER,useValue: newOtHelperInstance() },DatePipe,SmpEventTypeCheckerService,SmpLangService
        ]
      });

      componentFixture = TestBed.createComponent(SmpEventsCompactEventComponent);
      componentInstance = componentFixture.componentInstance;
    });

    describe('Global',() => {
      it('GIVEN there are date/time AND address ' +
        'WHEN component loads THEN display event',() => {
          //// TEST ONE
          componentInstance.isEventEnabled = true;
          cssSelector = '.events-compact-event';

          let debugElement = specService.queryDebugElement(
            componentFixture,cssSelector);

          expect(debugElement).not.toBeNull();
        });

      it('GIVEN there are no date/time AND no address ' +
        'WHEN component loads THEN do not display event',() => {
          //// TEST TWO
          componentInstance.isEventEnabled = true;
          //componentInstance.isAddressEnabled = false;
          // componentInstance.isDateEnabled = false;
          cssSelector = '.events-compact-event';

          let debugElement = specService.queryDebugElement(
            componentFixture,cssSelector);

            console.log('--------------',debugElement.nativeElement);
          // expect(debugElement.nativeElement).toBe(null);
          // expect(true).toBe(true);
          expect(debugElement).not.toBeNull();
        });
    });
});

specService.queryDebugElement如下:

queryDebugElement(fixture: ComponentFixture<any>,cssSelector: string): DebugElement {
    fixture.detectChanges();

    return fixture.debugElement.query(By.css(cssSelector));
  }

每当我使用

expect(true).toBe(true);

要么

expect(debugElement.nativeElement).toBe(null);

要么

expect(debugElement).not.toBeNull();

在TEST TWO中,无论何时使用,测试都会正常工作或失败

expect(debugElement).toBeNull();

因业力崩溃使用的浏览器(使用chrome / chromium / PhantomJs测试)并没有提供任何发生的线索.这不是一个简单的“期望错误是真的”失败,测试上下文完全崩溃.

你看到任何可以解释这种行为的东西吗?

解决方法

use expect(debugElement).toBeTruthy();而不是期望(debugElement).not.toBeNull(),因为当某些内容未定义时,not.tobeNull()可能不会按预期运行.如果您的debugElement未定义,则可能会产生问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读