2013-07-02 2 views
0

간단한 비동기 테스트가 작동하는 데 문제가 있습니다. 함수에 전달 된 data는 않기 때문에 다음 코드 조각, 심지어해야하지만, 콘솔에서 오류가 발생하지 않습니다 동일하지 0 :비동기 테스트에서 오류가 발생하지 않습니다.

define([ 
    'intern!bdd', 
    'intern/chai!expect' 
], function (bdd, expect) { 
    with (bdd) { 
     describe('Test', function() { 
      it('async test', function(){ 
       var dfd = this.async(2000); 
       var wait = function(ms) { 
        setTimeout(function(){ 
         dfd.resolve('test'); 
        }, ms); 

        return dfd.promise; 
       }; 

       wait(1500).then(dfd.callback(function (data) { 
        // data === 'test', so this should fail. 
        expect(data).to.equal(0); 
       }), dfd.reject.bind(dfd)); 
      }); 
     }); 
    } 
}); 

난 내가 때문에 어딘가에서 엉망 확신 지금까지는 약속들과 함께 일한 적이 없지만 어디서 왔는지는 알 수 없습니다. 어떤 아이디어라도 많은 도움이됩니다. 감사!

답변

1

두 개의 서로 다른 비동기 작업에 동일한 Deferred 개체를 사용하고 처음으로이 작업을 해결합니다 (= 성공적인 테스트). 대기 함수에 대해 자신 만의 별도 Deferred 객체를 만들어야합니다.

define([ 
    'intern!bdd', 
    'intern/chai!expect', 
    'intern/node_modules/dojo/Deferred' 
], function (bdd, expect, Deferred) { 
    with (bdd) { 
     describe('Test', function() { 
      it('async test', function(){ 
       var dfd = this.async(2000); 
       var wait = function(ms) { 
        var waitDfd = new Deferred(); 
        setTimeout(function(){ 
         waitDfd.resolve('test'); 
        }, ms); 

        return waitDfd.promise; 
       }; 

       wait(1500).then(dfd.callback(function (data) { 
        // data === 'test', so this should fail. 
        expect(data).to.equal(0); 
       }), dfd.reject.bind(dfd)); 
      }); 
     }); 
    } 
}); 
관련 문제