Angular 2 unit testing - getting error Failed to load 'ng:///DynamicTestModule/module.ngfactory.js'
I ran into this issue myself yesterday. The problem was that I had an Input() property on my component class that I wasn't setting in the test. So for example, in my-component.ts:
@Component({ selector: 'my-component'})export class MyComponent { @Input() title: string;}
and my-component.spec.ts:
beforeEach(() => { fixture = TestBed.createComponent(MyComponent); component = fixture.componentInstance; component.title = 'Hello there!' // <-- this is required! fixture.detectChanges();});
Or you could provide a default value in the component somewhere. Either way, the test will crash if any inputs are not set and you'll get that unintuitive error.
Note: Running ng test -sm=false
will give the actual error message causing the problem. Credit: https://stackoverflow.com/a/45802115/61311
To find out what's really causing the error, disable source maps:
For angular-cli >= v6.x:
ng test --source-map=false
For angular-cli v1.x:
ng test -sm=false
You will then see a better error, e.g. "Cannot read property 'x' of undefined" in the actual source file that's causing the error. For some reason, there's a bug with sourcemaps right now in testing, and you just get this cryptic error.
running tests with --sourcemaps=false
will not fail Karma silently but give you some detail about the error instead.