对函数的参数(即函数)进行单元测试
Unit testing a function's parameter that is a function
我想知道如何为JavaScript中的函数参数编写单元测试。
例如
_.forEach($scope.all, function(key, value) {
$scope.arr.push(key.name);
});
我能够在我的单元测试中输入 forEach
函数,并且还可以访问第一个参数,但我无法访问function(key, value) {}
参数。
其次,该函数参数叫什么? 它只是一个匿名函数吗?
在单元测试中,您不应该关心测试每个实现细节。你并不真正关心那个匿名函数,而是你的 SUT 的副作用或返回值是否符合预期。您应该在调用函数后测试$scope.arr
是否包含预期的数据。
如果你真的需要访问该函数,你必须使用类似间谍的东西来记录何时调用_.forEach
,然后访问该参数:
var forEachSpy = sinon.spy(_, 'forEach');
yourFn();
var forEachFn = forEachSpy.lastCall.args[1];
但同样,我认为以这种方式进行测试不会增加价值,只会导致脆弱的测试,这些测试在重构实现细节时仍然没有用处。例如,假设您将来使用 Each Array
;你的测试会中断,但你并不真正关心你如何循环结构,只关心你的范围是正确的。
相关文章:
- AngularJS指令单元测试中未定义的函数
- 如何在JavaScript中对箭头函数进行单元测试
- 在http服务单元测试中使用request-js时,chai.request不是一个函数
- 如何对调用getJSON的javascript函数进行单元测试
- AngluarJS单元测试-未定义不是函数
- 因果报应单元测试'未定义'不是函数错误
- 没有返回类型的函数的Javascript单元测试
- 在对揭示模块进行单元测试时,如何存根私有函数
- 如何对延迟函数执行单元测试
- jquery中的单元测试函数
- 如何使用 express、猫鼬和节点单元测试异步函数
- 对函数的参数(即函数)进行单元测试
- 连接到数据库的单元测试异步函数
- AngularJS私有函数单元测试混乱
- 模块中的单元测试函数
- 如何对传递给JavaScript函数的匿名回调进行单元测试
- $event.stopProposation不是Angularjs单元测试中的函数错误
- 在单元测试时,如何测试绑定函数的相等性
- 未定义不是函数:单元测试护照身份验证自定义回调
- 使用函数单元测试弹出窗口