반응형
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
반응형
'programing' 카테고리의 다른 글
AngularJS에서 중첩된 보기를 설정하려면 어떻게 해야 합니까? (0) | 2023.02.27 |
---|---|
React에서 구성 요소 간에 기능을 공유하는 올바른 방법 (0) | 2023.02.27 |
Spring MVC에서 @ResponseBody를 사용할 때 MIME 유형 헤더를 설정하려면 어떻게 해야 합니까? (0) | 2023.02.27 |
Woocommerce에서 활성화된 모든 결제 방법 나열 (0) | 2023.02.27 |
Oracle 테이블이 마지막으로 업데이트된 시기를 확인하는 방법 (0) | 2023.02.27 |