使用Jasmine捕获传递给不同JavaScript文件中函数的参数
Capture an argument passed to function in different JavaScript file using Jasmine
我有一个JavaScript文件main_one.js
,它需要另一个Java脚本文件helper.js
。
helper.js
warp = {
postThisEvent: function(a) {
// some operation on a
}
};
main_one.js
var Helper = require('path/helper.js');
// some steps
Helper.warp.postThisEvent(event);
我想用Jasmine捕捉event
。如何创建用于在postThisEvent()
中捕获event
的间谍对象?
在Jasmine测试中需要Helper
,然后通过以下方式进行侦察:
spyOn(Helper.warp, "postThisEvent").and.callThrough();
这将用间谍函数替换对象Helper.warp
上的postThisEvent
。当它被调用时,间谍将注册调用,然后按照callThrough()
的指示调用原始方法。
然后您可以预期postThisEvent()
是通过以下方式使用预期对象调用的:
expect(Helper.warp.postThisEvent).toHaveBeenCalledWith(jasmine.objectContaining({
someProperty: "someValue"
}));
jasmine.objectContaining()
是一个助手,它只测试被测对象的多个属性中是否存在预期属性。
您也可以直接检查复杂的对象:
expect(Helper.warp.postThisEvent.calls.mostRecent().args[0].someProperty).toBe("someValue");
请注意,当postThisEvent()
被保存到一个变量中时,这样的间谍可能不起作用,该变量被调用如下:
var postThisEvent = Helper.warp.postThisEvent;
function triggering() {
postThisEvent({ someProperty: "someValue" })
}
// now a spy is created and then triggering() is called
在这种情况下,在进行间谍活动时无法参考原始方法。在这种情况下,无法在Javascript中拦截函数/方法。
参见
- Jasmine 2.4间谍和
- 其他跟踪属性一章中的间谍检查
相关文章:
- Word文件(Javascript?)中有哪些字符
- 获取二进制数据并将其保存为.mp3文件Javascript
- 创建包含文本内容的新 Google 云端硬盘文件 (javascript)
- 将从 URL 输出的 JSON 保存到文件 javascript
- 单个页面上的多个音频文件javascript
- 将表单数据写入json文件-javascript
- imacros提取两部分数据+连接常量保存到文件javascript
- 检索 XML 文件 (JavaScript)
- 如何将画布图像“data:image/jpeg;base64,.”转换为普通图像文件 - JavaScript
- 用固定的行名称附加文件 javascript
- 打开并读取二进制文件(JavaScript)
- 将 emacs 用于大型多文件 JavaScript 项目
- 加载外部javascript,但HTTP请求重复一个文件javascript
- 从2D数组创建图像文件-JavaScript
- 正在读取文本文件Javascript
- 通过django将STATIC_URL传递到文件javascript
- 从输入文件javascript中获取一些数据
- Django”;静态“;文件-Javascript
- 上传两次相同的图像文件-Javascript
- 从文本文件javascript中读取行/变量