在新插座上进行Karma重新启动测试

时间:2018-12-05 16:06:27

标签: angularjs unit-testing karma-jasmine karma-runner

我遇到一个问题,即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

0 个答案:

没有答案