2016-08-24 3 views
0

재스민 : 초기에 설정 컨트롤러 속성, 각 1.5

컨트롤러 내가 수 있도록 내 컨트롤러를 초기화하는 동안 $ctrl.criteria을 전송하려면 여기

 
function SomeController(someService) { 
    const $ctrl = this; 

    activate(); 

    function activate() { 
    someService.retrieveSomeData($ctrl.criteria).then(doSomething); 
    } 

    function doSomething(response) { 
    $ctrl.result = response.data; 
    } 
} 

테스트

 
describe('SomeController',() => { 

    beforeEach(module('myModule')); 

    let $controller; 

    beforeEach(inject((_$controller_,) => { 
    $controller = _$controller_; 
    })); 

it('tests $controller properties',() => { 
    const $scope = {}; 
    const controller = $controller('SomeController', { $scope }); 
    }); 
}); 

나중에 $ctrl.result을 테스트하십시오.

+0

방금'const를 컨트롤러 = $ 컨트롤러 ('SomeController')을 가질 수있다'어디'controller'는'this'이있을 것이다 available –

+0

보시다시피, activate() 메소드는 초기화시 실행됩니다. 초기화 후에 설정하려고했지만 activate() 메소드가 이미 실행되었습니다. –

+0

@AbubakrDar가이 구성 요소의 컨트롤러입니까? –

답변

0

일반적인 솔루션이거나이 케이스에만 한정되어 있지만 컨트롤러의 현지인에게 전달하려면 $ controller의 세 번째 악보가 있어야합니다. 적어도, 그것은 나를 위해 일했습니다.

테스트

 
describe('SomeController',() => { 

    beforeEach(module('myModule')); 

    let $controller; 

    beforeEach(inject((_$controller_,) => { 
    $controller = _$controller_; 
    })); 

it('tests $controller properties',() => { 
    const $scope = {}; 
    const criteria = {id: 1}; 
    const controller = $controller('SomeController', { $scope }, { criteria }); 
    }); 
}); 
+0

나는 어떤 문서 나 쉽게 구할 수있는 내용에서 이것을 찾을 수 없다는 것에 놀랍니다. 그런 간단한 해결책. 어제 그걸 낭비 했어. –

0

이 시도 :

describe('SomeController',() => { 

    beforeEach(module('myModule')); 

    let $controller; 

    beforeEach(inject((_$controller_,) => { 
    $controller = _$controller_; 
    })); 

it('tests $controller properties',() => { 
    const scope = { 
     criteria : {id: 1} 
    }; 
    const controller = $controller('SomeController', { $scope : scope }); 
    }); 
}); 
+0

흠, 그 일을 시도했지만 기준은 아직 정의되지 않았습니다. –

+0

내가 알아 낸 것은 컨트롤러 속성을 세 번째 인수로 전달한 것입니다. –