Jasmine을 배우는 과정에서이 문제가 발생했습니다. 기본 함수를 실행 한 다음 다시 호출하라는 제한 시간을 설정합니다. 간단한 작업. Expected spy setTimeout to have been called with [ Function, 10 ] but was called with [ [ Function, 10 ] ]
jasmine testing coffeescript expect (setTimeout) .toHaveBeenCalledWith
는 이것을 (-> my_nifty_loop.loop(interval))
함수가 있기 때문에 같지인가 :
class @LoopObj
constructor: ->
loop: (interval) ->
#do some stuff
setTimeout((=>@loop(interval)), interval)
는하지만
describe "loop", ->
xit "does nifty things", ->
it "loops at a given interval", ->
my_nifty_loop = new LoopObj
interval = 10
spyOn(window, "setTimeout")
my_nifty_loop.loop(interval)
expect(setTimeout).toHaveBeenCalledWith((-> my_nifty_loop.loop(interval)), interval)
나는이 오류를 얻을의 setTimeout이 적절한 인수로 호출했다 확인하기 위해 테스트 할 (=>@loop(interval))
기능? 또는 두 번째 주위의 여분의 대괄호와 관련이 있습니까? [ [ Function, 10 ] ]
? 뭔가 다른 거있어?
어디로 잘못 갔습니까?
jasmine.any (기능)가 작동합니다. 나는 뚱뚱한 화살이 적당한'this'와 같게하기 위해 필요하다고 확신한다. 이제 문제는 "이 시험은 철저한 시험인가?"입니다.일부 setTimeout이 호출 된 것으로 입증되었지만 테스트에서 루프가 다시 실행되는 것을 보장하지는 않습니다. 내가 기다릴 것없이 스파이해야합니까? 아니면 다른 방법? 어쩌면 상관 없어요? –
Roger that : 뚱뚱한 화살. 나는 이것이 유효한 테스트 개념이라고 생각한다; LoopObj.loop에 대한 올바른 참조를 얻는 것만으로도 완벽하게 작동합니다. 익명 함수에서 my_nifty_loop.loop (interval)을 래핑하는 스펙 기대가 있습니까? 다시 n00b 눈을 통해 (-> my_nifty_loop ...) 함수 정의처럼 보입니다. –