我正在研究Browserify React/Flux應用程序,我想對它進行某種UI集成測試。也就是說,使用真實的組件,只存留ajax調用。React/Flux集成測試與業績:如何在每次測試前重新加載應用程序
我現在遇到的問題是,在每次測試之後,商店都會被初始化爲數據,所以運行的下一個測試將因商店的初始狀態無效而失敗。
我希望每個測試都能找到一個全新的React應用程序。
在使用karma + jasmine + browserify時,有沒有一種方法可以在每次測試之前重新啓動/重新加載React + Flux應用程序?
-------編輯1:
我使用單元測試玩笑,但對於集成測試我想用的東西更接近比jsdom一個真正的瀏覽器。
爲此我使用PhantomJs與Karma。
測試是非常簡單:
describe('Dashboard component', function() {
afterEach(function() {
clearAjaxStubs();
});
it('initializes the OrgStore when mounted and sets the state properly',
function() {
stubAjaxCall(require('./Dashboard-contract.json'));
let dashboard = TestUtils.renderIntoDocument(
<Dashboard params={{orgId: 'org123'}}/>
);
executeAllTimers();
expect(dashboard.state.orgData.data).toEqual({name: 'orgName'});
});
});
基本上,當儀表板部件安裝它將使調用Ajax(爲我創建一個stub)和將初始化Orgstore中使用所述服務器響應所述通量數據流。然後在OrgStore更改並更新組件狀態時通知該組件。
當我只運行這個測試時,測試很完美。
如果存在多個問題,則會顯示該問題:下一個測試會發現OrgStore已經使用此測試放入的數據進行了初始化。
這就是爲什麼我想在每次測試之前重新啓動React應用程序的原因。
你實際上是以瀏覽器爲目標嗎?像網絡驅動程序測試?或者你使用React TestUtils來渲染?一個示例測試可能很好。 –
@DavinTryon是的,我的目標是PhantomJs。這不是網絡驅動程序測試,我使用Karma測試運行器在PhantomJs中運行測試。我添加了一個例子和更多的解釋。謝謝。 – afcastano