net*_*jor 3 javascript jasmine ecmascript-6
我在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();
});
});
});
Run Code Online (Sandbox Code Playgroud)
问题是我在构造函数中执行一个方法,我想检查它是否已执行.为什么在我的例子中Jasmine告诉它不是?
问题是new Test在安装间谍之前调用构造函数(通过使用).因此,该功能在被侦察时已被调用.
为了解决这个问题,你可以窥视Test.prototype.sum,之前调用构造函数:
spyOn(Test.prototype, 'sum').and.callThrough();
var test = new Test();
Run Code Online (Sandbox Code Playgroud)
看到更新的小提琴.
| 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |