我有两个函数funcA()和funcB(),我正在为$ scope.funcA()编写单元测试用例。

以下是定义:

function funcB(){
//statements
 console.log("At function B");
};

$scope.funcA() = function(){
funcB();
console.log("At function A");
};

现在,当我测试我的$ scope.funcA()实际上正在调用我的funcB()时。如何停止它并向funcB()进行假调用或模拟;在 Jasmine 中

最佳答案

您可以使用spyOn()andCallFake()来实现。
在这里查看我较早的答案之一。
Does Jasmine's spyOn() allow the spied on function to be executed?

希望这可以帮助。

编辑

对于较新版本的 Jasmine ,snytax为

spyOn($scope, 'funcB').and.callFake(function() {
      return 'something';
});

有关完整列表,请参见-http://jasmine.github.io/2.0/introduction.html

10-06 15:36