我坚持固执地放弃,并为一些看起来如此简单,应该开箱即用的东西找到一个变通办法...
我正在处理一个使用Node环境的Jasmine测试套件,它无法监视一个明确存在/提供/导入的对象。
我想是关于模块解析和可写属性...
有人能给我指一下正确的方向吗?
不管怎样:使用Angular和测试床之类的东西我从来没有遇到过间谍的问题,他们的工作就像......他们是开箱即用的。
注:
- 使用prototype来监视未修复:* spyOn(客户端.原型,'克隆').和. callThrough();*
- 如下图所示,不会覆盖任何内容。
下面是一个简化的实现来演示。
- 索引. js**:'
let state = null;
const templates = { obj: { a:1, b:2} },
init = () => state = clone(templates.obj),
clone = (obj) => JSON.parse(JSON.stringify(obj));
export {
init,
clone
}`
- 索引规范js**:'
import * as client from '../../index.js';
describe("test", () => {
it("should spy on the clone method", () => {
console.log(Object.getOwnPropertyDescriptors(client));
spyOn(client, 'clone').and.callThrough();
client.init();
expect(client.clone).toHaveBeenCalled();
});
})`
- 试验结果**:'
> client@1.0.0 test
> jasmine
Randomized with seed 24629
Started
client.clone: [Function: clone]
{
clone: {
value: [Function: clone],
writable: true,
enumerable: true,
configurable: false
},
init: {
value: [Function: init],
writable: true,
enumerable: true,
configurable: false
},
[Symbol(Symbol.toStringTag)]: {
value: 'Module',
writable: false,
enumerable: false,
configurable: false
}
}
F
Failures:
1) test should spy on the clone method
Message:
Error: <toHaveBeenCalled> : Expected a spy, but got Function.
Usage: expect(<spyObj>).toHaveBeenCalled()`
2条答案
按热度按时间3mpgtkmj1#
从'../../index.js'导入 * 作为导入模块;
brtdzjyr2#
index.js
index.spec.js
测试结果客户端@1.0.0测试jasmine
随机分配种子76297开始F
失败:1.测试应监视克隆方法消息:错误::应为spy,但获得的是函数。用法:expect().toHaveBeenCalled()堆栈:位于用户上下文中。(文件:///主页/主琼斯/项目/测试/规范/支持/索引.规范. js:7:30)位于