我已经使用webpack 3进行了 Jasmine 测试。现在我尝试将其与webpack 4一起使用,但是存在一些问题。
首先,我对spyOn函数有问题。
我找到了一些有关此问题的解决方法的文章:spy-on-getter-and-setter
我将spyOn更改为spyOnProperty,但是没有运气。现在我有问题
>错误::未声明myFunction可配置
我的代码是用js编写的,看起来像这样:
import * as FocusServiceSpy from '../focus/FocusService';
describe('#onLinkClick', function() {
it('should call myFunction', () => {
spyOnProperty(FocusServiceSpy, 'myFunction', 'get');
expect(FocusServiceSpy.myFunction).toHaveBeenCalled();
});
}
您知道这可能是个问题吗?
更新1:
我应该更具描述性。我想在FocusService的功能上创建 spy 。该服务只有一种称为myFunction的方法。我唯一想实现的就是确保将调用此方法。
现在我把它改成这样……并出现错误:
> TypeError:对象不是构造函数(正在评估“new FocusService()”)(第180行)
describe('#onLinkClick', function() {
const FocusService = require('../focus/FocusService');
it('should call myFunction', () => {
const service = new FocusService();
spyOnProperty(service, 'myFunction').and.callThrough();
... (do some action)
expect(service.myFunction).toHaveBeenCalled();
});
}
FocusService看起来像这样:
export function myFunction(arg) {
... (do some action)
}
最佳答案
在您的单元测试中,我可以看到几个问题。首先,您需要了解spyOnProperty
在属性上将spy
安装到现有对象上,但是它不会调用getter
本身。
spyOnProperty
。 spyOnProperty
名称。 您的测试结构如下:
it('should call myFunction', () => {
// given
const service = new FocusService();
const spy = spyOnProperty(service , 'myProperty', 'get').and.callThrough();
// when
const myProperty = service.myProperty;
// then
expect(myProperty).toBe(<expected value>);
expect(spy).toHaveBeenCalled();
});
关于javascript - 错误: <spyOnProperty> : function is not declared configurable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58852549/