1

Я пишу тестовый пример для следующего сценария. Покрытие кода не полностью покрыто. Я не знаю, можно ли писать или нет. если я спрошу что-нибудь неправильно средства любезно направлять меня написать тест для этого сценария и избежать этой проблемы в future.At-крайней мере, сказать, его можно или нетКак написать единичные тестовые примеры (жасмин) для вложенных функций?

(function() { 
    'use strict'; 

    angular 
     .module('myApp') 
     .component("testLockCtrl", { 
      templateUrl: 'wwwroot/html/myLocation/testLock.html', 
      controller: 'testLockCtrl as vm' 
     }) 
     .controller("testLockCtrl", testLockCtrl); 

    testLockCtrl.$inject = ['SessionService', 'HttpRequestSoapAPI']; 
    /*Parent Controller*/ 
    function testLockCtrl($rootScope, $mdDialog) { 

     vm.ChangeDataController=ChangeDataController; 
     /*childer controller*/ 
     function ChangeDataController($scope) { 
      $scope.tempData = true; 
      /*following functions (child of change data controller) can called in click*/ 
      $scope.editData = function() { 

       $scope.tempData = false; 
      } 


      $scope.editDatas = function() { 

       /*some code*/ 
      } 

     } 

     function addData() { 
      TC$DialogMgr.tag(function(tagID) { 
       $mdDialog.show({ 
        locals: { testCase: vm }, 
        controller: ChangeDataController, 
        parent: angular.element(document.body), 
        templateUrl: "wwwroot/html/myLocation/addData.html", 
        clickOutsideToClose: true, 
        preserveScope: true, 
        controllerAs: 'vm' 
       }).then(function() { 

       }, function() { 

       }).finally(function() { 
        TC$DialogMgr.unTag(tagID); 
       }); 
      }, TC$DialogMgr.type.Input); 
     } 
    } 

})(); 

it("Should check if Module Flag status is received", function() { 
     var data = [{ loc: 'mde', Status: -1 }]; 
     testLockCtrl.ChangeDataController(data); 
     var testData=testLockCtrl.editDatas() 
     expect(testData).toBeDefined(); 

    }) 

Выше мой тест может покрыть до ребенка контроллер, а не его вложенные функции. Мы можем получить доступ к переменной области в тестовом примере из файла controller.js. А также покрытие кода охватывает только функцию ChangeDataController, а не ее внутренние боковые функции. Пожалуйста, помогите мне написать тестовый пример и устранить мои сомнения.

+0

Как следует из ответа, каждая функция, которая должна быть прослежена или издевались должны быть выставлен как метод (или контроллер). – estus

+0

hi estus Я обновил свой код. И можете ли вы попытаться найти то, что я сделал как не так? – Sathish

+0

Вы не выставили addData как метод, а editDatas по какой-либо причине установлен в ChangeDataController. Нет никакой причины использовать $ scope, как в компоненте, это антипаттерн. – estus

ответ

0

Ответ заключается в том, что вы должны разоблачить эти внутренние функции или проверить их косвенно. Везде, где вызывается метод addData, вы можете просто убедиться, что вы проверили эту функцию и передали разные параметры вызывающей функции.

Или, если вы добавляете addData к $scope вы можете проверить легко:

$scope.addData = function() { /* ... */ }; 

В тесте:

+0

Я пробовал это так же, но я cant.i обновил свой код, вы можете его увидеть? – Sathish

 Смежные вопросы

  • Нет связанных вопросов^_^