Javascript 使用jest测试模拟angularJS控制器中的函数

Javascript 使用jest测试模拟angularJS控制器中的函数,javascript,angularjs,unit-testing,jestjs,controller,Javascript,Angularjs,Unit Testing,Jestjs,Controller,我有一个用angularJS编写的小控制器 第一个函数实际上是调用第二个函数来执行计算并返回 我想在测试中模拟第二个函数,以便它返回我在模拟中提供的值,而不是调用该函数 ABCService.js ABCServic.test.js 在这里,我想模拟addTwoNumbers(),这样我们就可以得到测试期间提供的值,而不是调用 类似于,Mock(addTwoNumbers(x,y))=0,因此现在callAddFunction将返回0而不是30,如果不进行Mock,它应该返回30 var app

我有一个用angularJS编写的小控制器

第一个函数实际上是调用第二个函数来执行计算并返回

我想在测试中模拟第二个函数,以便它返回我在模拟中提供的值,而不是调用该函数

ABCService.js ABCServic.test.js 在这里,我想模拟
addTwoNumbers()
,这样我们就可以得到测试期间提供的值,而不是调用

类似于,
Mock(addTwoNumbers(x,y))=0
,因此现在callAddFunction将返回0而不是30,如果不进行Mock,它应该返回30

var app = angular.module('mathModule', []);

app.controller('mathService', ['$scope', function($scope){

    $scope.first = 0;
    $scope.second = 0;

    $scope.addTwoNumbers = function(x, y) {
        return x + y;
    };

    $scope.callAddFunction = function() {
        return $scope.addTwoNumbers(10, 20);
    }

}]);
require('./mathService.js');

describe('Math service', function() {

    beforeEach(
        angular.mock.module('mathModule')
    );

    var $controller;

    beforeEach(inject(function(_$controller_) {
        $controller = _$controller_;
    }));

    describe('Test using 2 numbers', function() {

        var $scope, controller;

        beforeEach(function() {
            $scope = {};
            controller = $controller('mathService', { $scope: $scope });
        });

        it("Nested function", function() {
            var total = $scope.callAddFunction();

            expect(total).toEqual(31);
        });
    });
});