2014-09-03 71 views
6

Jasmine 2.0中的測試是否並行運行?根據我的經驗,他們不是但文章,引用Jasmine.js: Race Conditions when using "runs"表明茉莉花並行運行它們,所以我想知道如果我錯誤地寫我的測試。Jasmine 2.0中的測試用例是否並行運行

這是一組測試,我希望在1秒內執行而不是4秒。

describe("first suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

describe("second suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

我錯過了什麼嗎?

jsFiddle

+0

您可能想閱讀[this discussion](http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded)。我剛剛在Chrome中運行jsFiddle,它「在4.012s內完成」。這可能取決於哪個瀏覽器以及JS如何實現。 – zerodiff 2014-09-03 21:33:59

+0

沒有理由Jasmine不能並行運行異步測試並保持單線程。這是一個[fsFiddle](http://jsfiddle.net/dspigarelliMNDNT/vr5Larxx/),理論上可能是這樣的。 – Spig 2014-09-05 14:11:30

回答

8

茉莉花實際上不以任何方式運行規範並行。然而,可能有規範的異步部分需要足夠長的時間以至於經過內置時間限制,這將導致茉莉花開始運行下一個規範,即使仍然可能有代碼從早期的規範運行。

2

如果您想要並行運行測試,並且使用karma作爲測試啓動器,則可以使用​​將測試分割到多個瀏覽器實例中。它運行在規格不同的瀏覽器實例,非常簡單,安裝方便:

npm i karma-parallel 

,然後將「平行」在karma.conf.js添加到列表的框架

module.exports = function(config) { 
    config.set({ 
    frameworks: ['parallel', 'jasmine'] 
    }); 
}; 

​​

披露:我是作者