SinonJS-调用Stub之前的属性值
SinonJS - Property Value before Stub Called
我目前在中使用sinon.js进行存根。从我所看到的情况来看,使用库可以存根和监视方法,但不能监视属性。
在以下示例中,在调用submit
之前,是否有方法检查state.searchText
是否设置为state.suggestion
?
// currently using angular but applies equally to vanilla js
$scope.searchSuggestion = function() {
this.state.searchText = this.state.suggestion;
this.submit();
};
理想的测试代码:
it('should set the searchText to be the suggestion', function(){
// arrange
sinon.stub(scope, 'submit');
scope.state.searchText = 'old value';
scope.state.suggestion = 'new value';
// act
scope.searchSuggestion();
// assert
expect(scope.submit.called).to.be(true)
// ~not sure how to see if searchText was set first
});
我刚刚处理了一个类似的问题,所以尽管这是一个相当古老的问题,但我还是回答了。
对我有效的方法是用一个做断言的函数来代替这个函数,所以类似这样的东西:
it('should set the searchText to be the suggestion', function(){
scope.state.searchText = 'old value';
scope.state.suggestion = 'new value';
scope.submit = function() {
expect(whatever).to.equal(somethingElse);
};
scope.searchSuggestion();
});
这样,当调用submit时,您可以使用所需的任何断言来检查前提条件。不利的一面是,您可能需要添加一些额外的代码来处理恢复原始函数的问题,如果从未调用过该函数,则测试将顺利通过,因此您可能需要向其添加done()
回调,以防万一。
相关文章:
- 如何将属性值调用到 javascript
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 无法从JavaScript中的函数调用对象属性
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 在javascript函数调用中传递的HTML属性不完整
- 无法获取属性'的值;拆分'在IE8中调用ajax之后
- 如何将 JavaScript Yahoo Weather API 调用属性替换为变量
- 根据单选按钮id属性调用ajax jquery
- 如何对对象的所有属性调用函数
- 为多个属性调用一次函数
- JQuery基于CSS属性调用点击
- 如何使用javascript获取属性调用函数
- 从onchange属性调用javascript类函数
- 如何使用正则表达式对输入元素的name属性调用onclick函数
- Mootools“无法读取未定义的属性'调用'”
- 如何在HTML中使用“onlick属性”调用jquery插件函数
- 作为对象属性调用函数时如何引用构造函数方法
- 在按钮上使用onclick属性调用的Javascript函数
- JavaScript方法和属性调用的差异混淆