我遇到一个问题,即Karma正在运行一个单元测试时重新启动单元测试,然后导致新创建的测试失败。导致此行为的单元测试调用一个导致重定向的函数,我认为这是导致此问题的原因。
单元测试是:
it('should set the persona cookie', () => {
spyOn(scope, 'setPersona').and.callThrough();
window.onbeforeunload = jasmine.createSpy();
expect(cookies.get('selectedPersona')).toBeUndefined();
let persona = 'generalist';
scope.setPersona(persona);
expect(scope.setPersona).toHaveBeenCalledWith(persona);
expect(cookies.get('selectedPersona')).toEqual(persona);
});
$ scope.setPersona函数为:
$scope.setPersona = function(persona) {
$cookies.put('selectedPersona', persona);
window.location.href = '/';
};
要停止重定向,我在window.onbeforeunload
上添加了一个间谍,如此处所示:Some of your tests did a full page reload - error when running Jasmine tests
我看到的问题是测试成功的一半时间都没有问题。另一半,似乎测试在新的套接字下重新启动,然后失败。在日志中,我看到:
05 12 2018 15:21:59.584:INFO [HeadlessChrome 0.0.0 (Mac OS X 10.14.0)]: Connected on socket 33-J-PvXW-lWTk9HAAAB with id manual-8203
05 12 2018 15:21:59.691:INFO [HeadlessChrome 0.0.0 (Mac OS X 10.14.0)]: Connected on socket hSUTsLJb6MbnKqVoAAAC with id manual-1003