javascript - 未在内部函数上调用预期的间谍
问题描述
我正在用 AngularJS 编写一个应用程序。我正在用业力和茉莉花为我的角度服务编写单元测试。它没有按预期工作,因为单元测试不断给我这些错误:
预期的间谍照片已被调用。
这是我的代码笔与错误:https ://codepen.io/aubz/pen/zXyvbj
这是我的单元测试的代码片段:
it('should process the plain clocking settings', function () {
ClockingRecordTypeFactory.getRecord('plain', 'here', null, null, null, null, null);
spyOn(ClockingRecordTypeFactory, 'plain').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'photo').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'geo').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'manual').and.callFake(function () {});
expect(ClockingRecordTypeFactory.plain).toHaveBeenCalled();
expect(ClockingRecordTypeFactory.photo).not.toHaveBeenCalled();
expect(ClockingRecordTypeFactory.geo).not.toHaveBeenCalled();
expect(ClockingRecordTypeFactory.manual).not.toHaveBeenCalled();
});
以及我要测试的功能:
function getRecord(type, origin, coords, imageData, comments, reason, date) {
var record = getBaseClockingRecord();
if (type === 'plain') {
plain(record);
}
if (type === 'photo') {
photo(record);
}
if (type === 'geo') {
geo(record, coords);
}
if (type === 'manual') {
manual(record);
}
return record;
}
解决方案
该测试正在监视,ClockingRecordTypeFactory.plain
但实际上该getRecord
函数调用了本地函数plain
,因此根本不会调用该间谍。
您可以通过如下更改使间谍按预期工作getRecord
:
if (type === 'plain') {
this.plain(record);
}
if (type === 'photo') {
this.photo(record);
}
if (type === 'geo') {
this.geo(record, coords);
}
if (type === 'manual') {
this.manual(record);
}
此外,您还需要在调用之前在测试开始时设置您的间谍getRecord
:
spyOn(ClockingRecordTypeFactory, 'plain').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'photo').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'geo').and.callFake(function () {});
spyOn(ClockingRecordTypeFactory, 'manual').and.callFake(function () {});
ClockingRecordTypeFactory.getRecord('plain', 'here', null, null, null, null, null);
推荐阅读
- android - 从一个信号接收 url
- excel-formula - 假设每月付款随着通货膨胀而增加,我如何计算未来的投资增长?
- docker - Npm install 特定版本在 Dockerfile 中不起作用
- powershell - Shell 启动器脚本中的 PowerShell 错误
- python - pyPSA 仅优化调度
- html - 模糊的小尺寸图像
- php - 如何从 curl 响应中提取值
- javascript - 当我只有变量名作为字符串时如何获取变量的值?
- c# - 为什么我在使用 C# 调用 OCX C++ 代码时遇到问题
- python - 从 Git 导入 Python 包时出现“ModuleNotFoundError”