使用Controller的单元测试指令使用Jasmine

时间:2018-06-25 13:54:53

标签: angularjs unit-testing jasmine

我是Jasmine单元测试的新手,这是我第一次尝试使用控制器测试指令。我的指令和控制器的结构几乎没有什么不同,我在任何博客或stackoverflow问题中都没有看到。我在尝试访问_testSampleFunction()函数以测试我的测试用例时有些挣扎。这里的缺点是我无法更改指令的体系结构,而是要相应地编写测试用例。任何帮助将不胜感激!

下面是我的控制器的定义方式:

(function () {
'use strict';

angular.module('myApp',[])
        .directive('myDirective', myDirective);

function myDirective()
{
        var directive ={
        template : '<div></div>',
        controller : myController,
        controllerAs : 'vm',
        scope: {},
        };

        myController.$inject =['$scope'];
        return directive;

    function myController($scope)
    {
        var vm = this;
        init();

        function init()
        {
            vm.TestSampleFunction = _testSampleFunction;
        }

        function _testSampleFunction()
        {
            return 'my directive';
        }

    }

}})(window.angular);    

这是the人(包括spec.js):Demo Plunker

预先感谢!

1 个答案:

答案 0 :(得分:1)

指令测试使用真实的控制器,因此您无需在测试中进行任何控制器设置。

我已经通过视图的测试示例更新了您的Plunker,并且还介绍了如何掌握控制器。

方向性测试非常有用,因为您知道控制器和视图已正确绑在一起-我主要是(除了我不能做的奇怪情况之外),通过视图测试所有内容(例如,单击页面中的某些内容并检查是否该视图将进行相应的更新。)