2014-11-05 182 views
4

我正在使用茉莉花來測試我的項目。我用它來進行集成測試,而不是單元測試。茉莉花鏈式測試

describe("admin", function() { 

    var testUser = { 
     name: 'test', 
     pass: 'pass' 
    }; 

    it("should be able to create a new user", function(done) { 
     needle.post(server + "addUser.php", testUser, function (err, res) { 
      expect(res.statusCode).toBe(200); 
      done(); 
     }); 
    }); 

    it("should be able to delete the user", function(done) { 
     needle.post(server + "deletedUser.php", testUser, function (err, res) { 
      expect(res.statusCode).toBe(200); 
      done(); 
     }); 
    }); 


}); 

如何確保在添加測試後運行刪除測試?

+0

也許這是愚蠢的,但爲什麼不只是有一個小幫手方法,創建一個用戶實例,並在刪除測試中運行它?我對測試套件的使用經驗並沒有保證,但是谷歌搜索並沒有說茉莉花是否會這樣做。 – theWanderer4865 2014-11-05 18:46:42

+0

我認爲茉莉花支持這一點,但我不知道如何。 – Cristy 2014-11-05 20:33:02

回答

3

好的,答案可能很簡單:Jasmine按照外觀順序運行測試,即使是異步測試。

爲了測試這個我試過用:

it("A", function (done) { 
    console.log("A"); 
    setTimeout(done, 4000); 
}); 

it("B", function (done) { 
    console.log("B"); 
    setTimeout(done, 20); 
}); 

it("C", function() { 
    console.log("C"); 
}); 

輸出功率爲ABC,測試Bdone之前,從試驗開始A調用。

7

對於任何人誰可能跨越此絆倒:使用一個稍大的測試集顯示,爲了不保證(因爲茉莉花2.3.0):

it('a', function (done) { console.log('a'); setTimeout(done, 100); }); 
it('b', function (done) { console.log('b'); setTimeout(done, 100); }); 
it('c', function (done) { console.log('c'); setTimeout(done, 100); }); 
it('d', function (done) { console.log('d'); setTimeout(done, 100); }); 
it('e', function (done) { console.log('e'); setTimeout(done, 100); }); 
it('f', function (done) { console.log('f'); setTimeout(done, 100); }); 
it('g', function (done) { console.log('g'); setTimeout(done, 100); }); 
it('h', function (done) { console.log('h'); setTimeout(done, 100); }); 
it('i', function (done) { console.log('i'); setTimeout(done, 100); }); 
it('j', function (done) { console.log('j'); setTimeout(done, 100); }); 
it('k', function (done) { console.log('k'); setTimeout(done, 100); }); 
it('l', function (done) { console.log('l'); setTimeout(done, 100); }); 
it('m', function (done) { console.log('m'); setTimeout(done, 100); }); 
it('n', function (done) { console.log('n'); setTimeout(done, 100); }); 
it('o', function (done) { console.log('o'); setTimeout(done, 100); }); 
it('p', function (done) { console.log('p'); setTimeout(done, 100); }); 
it('q', function (done) { console.log('q'); setTimeout(done, 100); }); 
it('r', function (done) { console.log('r'); setTimeout(done, 100); }); 
it('s', function (done) { console.log('s'); setTimeout(done, 100); }); 
it('t', function (done) { console.log('t'); setTimeout(done, 100); }); 
it('u', function (done) { console.log('u'); setTimeout(done, 100); }); 
it('v', function (done) { console.log('v'); setTimeout(done, 100); }); 
it('w', function (done) { console.log('w'); setTimeout(done, 100); }); 
it('x', function (done) { console.log('x'); setTimeout(done, 100); }); 
it('y', function (done) { console.log('y'); setTimeout(done, 100); }); 
it('z', function (done) { console.log('z'); setTimeout(done, 100); }); 

// 2.1.0: a b c d e f g h i l k l m n o p q r s t u v w x y z 
// 2.2.0: a b c d e f g h i l k l m n o p q r s t u v w x y z 
// 2.3.0: a z c d e f g h i j k l m b o p q r s t u v w x y n 
// 2.3.1: a z c d e f g h i j k l m b o p q r s t u v w x y n 

沿here後續更新(如果有的話)。

更新:這是一個錯誤,並修復了v2.3.4。所有的測試都應該現在訂購。

+0

保存我的一天:) – WeMakeSoftware 2015-07-15 11:46:29