gpt4 book ai didi

javascript - Jasmine spy On javascript getter 导致 karma 挂起

转载 作者:行者123 更新时间:2023-12-03 09:35:58 24 4
gpt4 key购买 nike

我在使用 Jasmine 编写监视 Javascript getter 的测试时遇到一些问题。它导致我的测试套件挂起(使用 karma + phantomJS),然后最终浏览器断开连接,从未取得比相关测试更进一步的进展。

一个简单的例子可能是最简单的解释方法(使用通过 webpack + babel-loader 转译的 ES6):

class ExampleClass {
get name() {
return "My Name";
}
}

为了更改此 get 方法为我的测试返回的内容,我正在尝试以下操作:

describe("example class getter"), function() {
it("should return blue", function() {
let exampleClass = new ExampleClass();
spyOn(exampleClass, 'name').and.returnValue('blue');
expect(exampleClass.name).toBe('blue');
});
});

这会产生以下结果(其中有问题的测试是我的第七次测试):

PhantomJS 1.9.8 (Mac OS X 0.0.0): Executed 6 of 8 SUCCESS (0 secs / 0.02 secs)
WARN [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Disconnected (1 times), because no message in 10000 ms.
PhantomJS 1.9.8 (Mac OS X 0.0.0): Executed 6 of 8 DISCONNECTED (10.003 secs / 0.02 secs)
DEBUG [karma]: Run complete, exiting.

spyOn 正在处理未使用 get 语法定义的其他方法,因此我相信转译的构建管道工作正常。

有人以前见过这个,或者对修复有任何想法吗?

最佳答案

我也有同样的情况。这是我解决这个问题的方法:

class Foo {
get status() {
return 0;
}
}

所以模拟这个 Foo 进行测试:

class FooMock extends Foo {
_fakeStatus() {
return 1;
}

get status() {
return this._fakeStatus();
}
}

然后您使用 FooMock 而不是 Foo!例如:

it('check the status', () => {
spyOn(fooInstance, '_fakeStatus').and.returnValue(3);
expect(fooInstance.status).toBe(3);
}

希望这对您有用! :)

关于javascript - Jasmine spy On javascript getter 导致 karma 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com