$ scope에있는 컨트롤러 메소드를 테스트하려고합니다. 그 방법은 비동기 호출을하고 약속을 되 찾는다. 약속이 해결되면 결과는 $ scope의 변수에 할당됩니다.
내가 뽑아 내려고하는 테스트는 간단하다. $ scope 변수에 null을 할당하고, 메서드를 호출하고, 호출이 끝나기를 기다리고 결과가 $ scope 변수에 할당 될 것으로 기대한다.
어떤 이유로 든 약속이 해결되지 않습니다. 지금이 내가 그것을 테스트하기 위해 노력하고있어 어떻게
$scope.getSomething = ->
someFactory.find().then (response) ->
$scope.newValues = response.data
: 단위 테스트의 목적
it 'should get something', ->
scope.newValues = {}
scope.getSomething()
expect(scope.newValues.someData).toBeDefined()
를, 내가 조롱하고있어 여기에
http://plnkr.co/edit/qxs5Y54NvhA24Fk4MPv2?p=preview 컨트롤러 방법입니다 참조 "someFactory"는 $ q.when() 메서드를 사용하여, 내가 믿는 한 객체를 전달할 때 즉시 해결해야합니다. 여기에는 정말로 기다릴 필요가 없습니다. 이 모의 공장 :
mockSomeFactory = ($q) ->
{
find: ->
$q.when {someData: true}
}
그리고 제공 $ 사용 컨트롤러로 주입 :
beforeEach module 'myAngularApp', ($provide) ->
$provide.factory "someFactory", mockSomeFactory
return
내가 재스민의 실행, 대기 및 waitsFor 방법하지만 행운을 사용하려고했습니다. WaitsFor는 5000 밀리 초 후에도 항상 실패합니다. http://plnkr.co/edit/s2OL56jVCRK0Ecyycoz0?p=preview
누구나 전에 이런 일이 있었습니까?
하는 데 도움이! 고맙습니다. plunkr을 고쳐 주셔서 감사합니다. 나는 rootScope와 $ apply()에 관한 문서를 읽을 것이다. – Blaiz
문제 없습니다. $ q 문서도 확인해야합니다. 여기에 대한 설명은 http://docs.angularjs.org/api/ng.$q#description_differences-between-kris-kowals-q-and-$에서 볼 수 있습니다. q – hassassin
고마워요. 나는 그 특정 단위 테스트가 단지 scope로 작동하도록 할 수 있었다. 실제로 $ digest()는 root가 아닌 $ apply()이다. – Blaiz