2014-02-19 33 views
0

我想設置2個變量到我的測試用例異步函數返回。在之前的嘗試中,我使用了runs()和waitsFor(),但我想使用茉莉花2.0的done()功能。我試過這樣的事情:茉莉花2.0異步assignin變量

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

您忽略了JavaScript基本範圍規則,這根據函數上下文而改變。另外,如果make_valid_detailed是異步的,你的2個變量將不會被定義,因爲2個expect函數將在它之前執行。

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和茉莉花,如果你不能說:) – TorusTorus

+0

這實際上運行正常的異步測試。但是,你如何設置它的變量ouside()。我想設置路徑,以便它的所有()可以使用var路徑。 – TorusTorus