如何模拟或调用基本javascript函数?

如何模拟或调用基本javascript函数?,javascript,angularjs,unit-testing,jasmine,Javascript,Angularjs,Unit Testing,Jasmine,我有两个函数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()进

我有两个函数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()进行假调用或模拟;茉莉花

您可以使用
spyOn()
和callfake()
来实现它。 请看我先前的一个答案。

希望这有帮助

编辑

对于较新版本的茉莉花,snytax将是

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

有关完整列表,请参见-

您好,在我的问题中,您能给我演示一下我的示例吗?我已经尝试了很多,如果您能用我的示例演示一下,我会很高兴的。您应该创建一个plunk/jsfiddlesee funcB只是一个基本的javascript函数,即函数funcB(){//statements}现在我做的是var mockfuncB=jasmine.createSpy(“funcB”);spyOn(mockfuncB,'funcB')。和.callFake(function(){});我要做的是从funcA()对funcB()进行假调用。但它显示了一个错误,即funcB()方法不存在,而您不能。该功能必须是可访问的,以便您监视它。实际上,只能从控制器内部访问
funcB
。请看@yarons Hi那么什么是正确的方法呢?我应该让我的funcB()像$scope.funcB(){},这样我就可以测试它了吗?我不知道还有其他方法可以做到这一点