角度-材质-测试-$ mdSidenav

问题描述 投票:0回答:1

我第一次在Stack上写问题;)我有一个测试$ mdSidenav的问题(角度材料组件。请参见https://material.angularjs.org/)。在我的控制器中,我有类似::>

$scope.toggleRight = function() {
    $mdSidenav('right').toggle();
};

我想测试一下。因此,在测试文件中,我首先创建了该对象的模拟:

var $mdSidenav = function(test){
        return {
            toggle: function(){
                return true;
            }
        };
    };

    beforeEach(inject(function ($controller) {
        $scope = $rootScope.$new();
        createController = function () {
            return $controller('headerCtrl', {
                '$scope': $scope,
                '$mdSidenav': $mdSidenav
            });
        };
    }));

然后我正在尝试对其进行测试:

describe('toggleRight method', function(){
        beforeEach(function(){
            spyOn($mdSidenav('right'), 'toggle').and.callThrough();
        });

        it('Should toggleRight open/close', function(){
            $scope.toggleRight();
            expect($mdSidenav('right').toggle).toHaveBeenCalled();
        });

    });

但是因果报应将这个错误发送给我:

错误:应该是间谍,但是得到了功能。

我希望有人可以帮助我;)

我第一次在Stack上写问题;)我在测试$ mdSidenav(角度材料组件。请参阅https://material.angularjs.org/)时遇到问题。在我的控制器中,我有类似以下内容:$ ...

angularjs testing jasmine angularjs-material
1个回答
1
投票

您可以尝试其他方法,使用$ provide和一个匿名模块来注入模拟。

© www.soinside.com 2019 - 2024. All rights reserved.