내 현재 백본 모음 중 하나에 대해 jasmine 테스트를 작성할 때 정말 짜증나는 오류가 발생했습니다. 자바 스크립트 및 재스민에서 잘못된 작업을 수행하는 대신 테스트를 작성하는 방식이 아니라고 생각합니다. 나. 하지만 해결책을 찾을 수 없습니다. Jasmine 백본, 범위 지정 문제
나는 내가 @_convertStrToArray 방법이 @search을 실행에 호출 된 경우, 자스민과 테스트하고자하는 문제class Stuff extends Backbone.Collection
search: (str) ->
@trigger('search', @_filter(@_convertStrToArray(str)))
_convertStrToArray: (str) ->
str.toLowerCase().split()
_filter: (str_array) ->
@filter (stuff) ->
for _sub in str_array
... do something here
우리를 이끌 다음과 같은 간단한 코드를 얻었다. 나는 (@stuff 성공적으로 beforeEach 문에서 생성 된!) 나는 지금 내 자스민 시험에서 다음과 같은 오류를 얻고있다
...
it "should call _convertStrToArray", ->
spyOn(@stuff, '_convertStrToArray')
@stuff.search('cool stuff')
expect(@stuff._convertStrToArray).toHaveBeenCalled()
...
..
TypeError: Cannot read property 'length' of undefined
스택 트레이스를 추적하여 다음과 같은 시험을 얻었다 나는 그 오류가 다음 줄에서 나온다는 것을 알게되었다 :
for _sub in str_array
분명히 내가 해결할 수없는 범위 지정 문제가있다. @filter 메서드는 _filter 메서드는 백본에서 제공됩니다. 스크립트는 절대적으로 잘 작동합니다. 테스트에 문제가 있습니다.
질문 : @filter 호출에서 str_array 변수에 대한 액세스 권한을 올바르게 얻으려면 어떻게해야합니까?
큰 도움을 주셔서 감사합니다. – pabera