programing

AngularJS HotTowel에서 vm "ControllerAs" 구문을 사용하는 경우 장치 테스트 파일에서 $scope에 액세스합니다.

powerit 2023. 2. 27. 22:16
반응형

AngularJS HotTowel에서 vm "ControllerAs" 구문을 사용하는 경우 장치 테스트 파일에서 $scope에 액세스합니다.

예를 들어, http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/ 를 참조해 주세요.

제목에서 알 수 있듯이 이 튜토리얼 [http://tech.pro/tutorial/1473/getting-started-with-angularjs-unit-testing]에서 유닛 테스트를 셋업하고 있습니다.단, VM 변수에 액세스 할 수 없는이외에는 문제가 없습니다.

dashboard.display

var controllerId = 'dashboard';
angular.module('app')
    .controller(controllerId, ['common', 'datacontext', dashboard]);


function dashboard(common, datacontext) {
    var getLogFn = common.logger.getLogFn;
    var log = getLogFn(controllerId);

    var vm = this;      
    vm.title = 'Dashboard';

대시보드사양.js

describe("app module", function() {
    beforeEach(module("app"));

    describe("dashboard", function() {
        var scope,
            controller;

        beforeEach(inject(function($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller;
        }));

        it("should assign Dashboard as title", function() {
            controller("dashboard", {
                $scope: scope
            });
            expect(scope.title).toBe("Dashboard");
        });
    });
});

시도 결과: 컨트롤러 의존관계에서 직접 "$scope"라는 이름을 지정하고 "title" 속성을 설정하면 (테스트에 합격) 동작합니다.하지만 저는 패턴을 그대로 유지하고 싶습니다.

종속성에 직접 $scope를 전달하고 컨트롤러 파라미터의 이름을 "vm..."로 지정하려고 했습니다.

Karmas 실패 테스트 메시지: '대시보드'로 정의되지 않았습니다.

도움에 감사드립니다!

아, 이제 알겠네요...테스트에서 작성된 컨트롤러를 참조함으로써 VM 변수에 액세스할 수 있습니다.

 it("should assign Dashboard as title", function () {
       var vm = controller("dashboard", { $scope: scope });
       expect(vm.title).toBe("Dashboard");
    });

다음 작업도 수행할 수 있습니다.

it("should assign Dashboard as title", function () {
    var controller = controller("dashboard as vm", { $scope: scope });

    expect(scope.vm.title).toBe("Dashboard");
});

언급URL : https://stackoverflow.com/questions/25191033/accessing-scope-from-unit-test-file-when-using-the-vm-controlleras-syntax-fro

반응형