我在运行{
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
...
"zone.js": "^0.8.19"
}
后遇到一些错误,在升级到我的所有软件包后,我得到了以下版本:
"jasmine-core": "~3.1.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0"
和devDependencies
"message": "An error was thrown in afterAll\n[object ErrorEvent]", "str": "An error was thrown in afterAll\n[object ErrorEvent]"
我收到了这个错误:
import { async, TestBed } from '@angular/core/testing';
import { UserInmailComponent } from './user-inmail.component';
describe('Component: UserInmail', () => {
it('should create an instance', () => {
const component = new UserInmailComponent();
expect(component).toBeTruthy();
});
});
我所有的测试都非常简单,如:
{{1}}
我认为我的测试文件不会导致问题。
答案 0 :(得分:3)
即使在使用“ jasmine-core v2.8.0”的情况下,我在多个单元测试中也遇到了此错误消息的麻烦。经过一番研究,我能够重现它,并发现当您使用缺少必要变量的模拟或存根(在我的情况下> observables)时,它会发生。
例如,如果您像这样初始化TestBed:
TestBed.configureTestingModule({
declarations: [HeaderComponent],
imports: [BrowserModule],
providers: [
{provide: AuthService, useClass: AuthServiceStub}
]
})
,您在AuthService中有一个可观察的对象,该对象在HeaderComponent中以某种方式使用,但是您忘记在“ AuthServiceStub”中定义该可观察的对象,那么它将导致 “在afterAll \ n [object ErrorEvent]中引发错误” 。
这是茉莉花/因果报应的非常令人困惑的行为,因为它没有给您任何提示。我认为它应该引发空指针异常,因为该属性未在存根内部定义。
答案 1 :(得分:1)
它与zone.js中的错误有关 你必须将jasmine版本降级到2.9以使其正常工作
"jasmine-core": "~2.9.0",
答案 2 :(得分:1)
根据我的研究,这似乎是非常广泛的错误,可能是由许多开发人员错误引起的。 我的特定错误是使用未定义的URL调用HttpClient(HttpClientTestingModule)。该错误在我的浏览器中相对无效,一旦我修复了该错误,现在每次都会通过测试运行。我花了两天的时间拔头发,但是我要做的就是茉莉花spyOn.and.callThrough()而不是仅仅使用spyOn