12
Tôi đơn vị thử nghiệm một phần và đây là những gì tôi có:Chờ cho ngOnInit để kết thúc trong Jasmine Angular2
describe('Component: nav',() => {
beforeEach(() => addProviders([
provide(UserService, {useClass: MockUserService}),
NavComponent
]));
it('should have a property \'firstName\' with the value \'Crazypug\'',
async(inject([NavComponent], (component) => {
component.ngOnInit();
expect(component.firstName).toEqual('Crazypug')
}))
);
});
Đây là chức năng ngOnInit:
ngOnInit() {
this.userService.getFirstNameCall().subscribe(
data => {this.firstName = data.firstname; });
}
Khi tôi chạy thử nghiệm tôi nhận được:
Dự kiến không xác định đến bình đẳng 'Crazypug'
Làm thế nào tôi có thể để Jasmine đợi chức năng ngOnInit kết thúc? Tôi tìm thấy một số giải pháp về SO nhưng từ một thời gian dài trước đây (trong điều khoản angular2 của thời gian). Chúng rất phức tạp hoặc lỗi thời.
ngOnInit tôi gọi một http.get (thông qua phương pháp dịch vụ) và khi trở về của nó, thiết lập dữ liệu với giá trị nhận được. Nếu tôi bọc mã thử nghiệm trong một setTimeout, nó thành công nhưng phương pháp đánh dấu dường như không hoạt động (ngay cả khi được cung cấp một timeout giống như giá trị setTimeout .. Không chắc chắn lý do tại sao – Nitin