2014-02-19 2 views
0

비동기 함수가 반환하는 테스트 케이스에 2 개의 변수를 설정하고 싶습니다. 이전 시도에서는 runs() 및 waitsFor()를 사용했지만 jasmine 2.0의 done() 기능을 사용하려고합니다. 나는 다음과 같은 것을 시도했다 :jasmine 2.0 async assignin variables

describe("Test", function() { 

    it("makes a log file", function(done) { 
     make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) { 
      this.lpath = path; 
      this.status_code = returnCode; 
     }); 
     expect(this.lpath).toBeDefined(); 
     expect(this.status_code).toBeDefined(); 
     done(); 
    }); 

}); 

나는 변수가 이후의 테스트, it() 시나리오에 액세스 할 수 있기를 바란다. 나는 항상 '정의되지 않은'것입니다. 궁극적으로 나는 몇 가지 변수를 설정 한 몇 가지 비동기 함수를 실행하고 나머지 변수는 변수, 파일 등을 테스트합니다.

답변

0

이 함수의 컨텍스트에 따라 자바 스크립트 기본 범위 규칙이 무시됩니다. 또한, make_valid_detailed가 비동기 인 경우 2 개의 기대 함수가 그 앞에 실행되기 때문에 2 개의 변수가 정의되지 않습니다.

describe("Test", function() { 

it("makes a log file", function(done) { 
    make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) { 
     expect(path).toBeDefined(); 
     expect(returnCode).toBeDefined(); 
     done(); 
    }); 


}); 

}); 
+0

runs() 및 waitsFor() 구문을 사용하면 무엇을 기다릴 지 알 수 있습니다. 나는 done() 문법으로 이것을 달성하는 방법을 혼란 스럽다. 내가 말할 수 없다면 나는 JS와 Jasmine에 익숙하지 않다. – TorusTorus

+0

실제로 비동기 테스트를 실행하는 데는 문제가 없다. 그런데 당신은 어떻게 그것의 변수를 설정 하는가? 모든 경로()가 var 경로를 사용할 수 있도록 경로를 설정하려고합니다. – TorusTorus