单元测试 – 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未定义,则可能会产生问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |