FYI ein Problem auf Github und ebenfalls enthalten Gespeichert plunkr im Bug mit Details: https://github.com/angular/angular/issues/19292Umgehen * ngIf auf einem Schräg/Jasmine Unit-Test
Ich kann einfach nicht die ngIf übergeben bekommen, um den Wert zu überprüfen. Wenn ich ngIf entferne, funktioniert es gut. Um dies zu umgehen, habe ich den Wert des Botschafters direkt im beforeEach() festgeschrieben. Aber ohne Erfolg verpasse ich etwas anderes.
Im HTML:
<h3 class="welcome" *ngIf="ambassador"><i>{{ambassador.username}}</i></h3>
Jasmin:
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ProfileComponent, BannedComponent ],
providers: [ HttpClient, {provide: AmbassadorService, useClass: MockAmbassadorService } ],
imports: [ RouterTestingModule, FormsModule, HttpClientModule ]
});
fixture = TestBed.createComponent(ProfileComponent);
component = fixture.componentInstance;
// AmbassadorService actually injected into the component
ambassadorService = fixture.debugElement.injector.get(AmbassadorService);
componentUserService = ambassadorService;
// AmbassadorService from the root injector
ambassadorService = TestBed.get(AmbassadorService);
// set route params
component.route.params = Observable.of({ username: 'jrmcdona' });
component.ambassador = new Ambassador('41', '41a', 'jrmcdona', 4586235, false);
component.ngOnInit();
});
it('should search for an ambassador based off route param OnInit',() => {
de = fixture.debugElement.query(By.css('.welcome'));
el = de.nativeElement;
fixture.detectChanges();
const content = el.textContent;
expect(content).toContain('jrmcdona', 'expected name');
});
Wie in dem Problem, das Sie aufgelistet haben, erwähnt wurde, können Sie 'fixture.autoDetectChanges()' auch verwenden, um Änderungen automatisch zu erkennen, obwohl die explizite Erkennung solider ist. – estus