I'm running into a unit testing issue with Angular 2 RC5 where it doesn't appear that the ComponentFixture detectChanges method is working the way I expect it to. Here is a snippet of my code:
describe('Component Test 1', () => {
beforeEach(async(() => {
TestBed.compileComponents();
}));
it('should calculate base price', async(() => {
var fixture = TestBed.createComponent(CalcComponent);
console.log('Got here 1.');
fixture.detectChanges();
console.log('Got here 2.');
expect(fixture.componentInstance.calculateBasePrice()).toBeGreaterThan(50);
}));
});
Essentially, when this unit test is run, 'Got here 1.' is printed but the test never goes on to print the second 'Got here 2.' line, and I don't get any sort of useful error message regarding what the error might be. All I get is a very generic message telling me the test failed, even though it clearly never got to the expectation line seeing as how the second console.log line is never printed:
SUMMARY:
√ 9 tests completed
× 1 test failed
FAILED TESTS:
CalcComponent Tests
Component Test 1
× should calculate base price
PhantomJS 2.1.1 (Windows 7 0.0.0)
detectChanges
detectViewChildrenChanges
detectChangesInternal
detectChanges
detectChanges
detectViewChildrenChanges
detectChangesInternal
detectChanges
detectChanges
detectChanges
...
I know the problem is around the fixture.detectChanges() line because if I do comment it out, the second console.log prints, and I get an error regarding the expectation failing because of an undefined object (probably since fixture.detectChanges() was never called). Does anyone have an idea of what might be going on here?