我创建了 a simple example在 JSFiddle 上测试我在项目中遇到的一个问题:
describe('testing es6 and jasmine', function() {
describe('let', () => {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
it('is es6 works', function() {
class Test {
constructor() {
var x = this.sum(1, 1);
}
sum(a, b) {
return a + b;
}
}
var test = new Test();
spyOn(test, 'sum').and.callThrough();
expect(test.sum).toBeDefined();
expect(test.constructor).toBeDefined();
expect(test.sum).toHaveBeenCalled();
});
});
});
问题是我在构造函数中执行了一个方法,我想检查它是否被执行了。为什么在我的示例中 Jasmine 告诉它不是?
最佳答案
问题是您在安装 spy 之前调用了构造函数(通过使用 new Test
)。因此,该函数在被监视时已经被调用。
要解决这个问题,您可以在调用构造函数之前监视Test.prototype.sum
:
spyOn(Test.prototype, 'sum').and.callThrough();
var test = new Test();
查看更新的 fiddle .
关于javascript - 使用 Jasmine 测试函数是否在 ES6 构造函数中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39526944/