茉莉花模拟第二种方法
jasmine mock second method
我正在尝试在茉莉花中做以下事情,但不确定是否可能:
我得到了一个包含 2 个方法的服务对象,A 和 B。方法 A 调用方法 B(B 实际上是一个$http调用,我不想在测试期间执行:我想模拟它)。
在我的"之前每个"部分中,我都这样做: spyOn(Serviceinstance, 'B').and.callFake(function(){
return true;
});
在我的测试中:
var result = Serviceinstance.A();
expect(result).toBeTrue();
当然,B 的真实代码返回 false。我的问题是我的测试总是失败。间谍中提供的函数永远不会被方法 A 调用。另一方面,如果我这样称呼B:
var result = Serviceinstance.B();
然后调用间谍的功能,我的测试通过。
那么我应该像这样修改我的实例吗:
Serviceinstance.B = function(){return true;}
因为茉莉花不能模拟调用堆栈的"第二"级别?(对我来说似乎完全不太可能)
我肯定错过了一些东西....
这是一个有效的代码:
describe('Service test suite', function() {
it('should return true', function() {
var Serviceinstance = new Service();
spyOn(Serviceinstance, 'B').and.callFake(function() {
return true;
});
expect(Serviceinstance.A()).toBe(true);
})
});
https://jsfiddle.net/ronapelbaum/9moLhhbr/
相关文章:
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 有没有一种方法可以从Javascript检测特定的应用程序是否安装在(AndroidiOS)设备上
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 有没有一种方法可以在Javascript中进行可变递归currying
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- jQuery:使用substr()的另一种方法
- 有没有一种方法可以直接从cordova获得滚动位置
- 有没有一种方法可以通过只引用JavaScript来执行代码
- firebase中有没有一种方法可以防止快速连续写入
- GWT:有没有一种方法可以修改GWT在编译中使用的Cast.java文件
- 有没有一种方法可以将一个元素从二维数组内部移动到数组中的另一个位置,而不移动其他元素?