2016-09-19 104 views
1

我想寫測試的承諾結果,我dot'n想解決承諾在每個it/pit部分。jest - 在測試前解決承諾

我需要水木清華這樣的:

describe('getData() results test',() => { 
    return getData().then(response => { 
    it('foo',() => expect(response.foo).toEqual(1)); 

    it('bar',() => expect(response.bar).toEqual(2)); 

    it('bar',() => expect(response.bar).toEqual(3)); 
    }); 
}); 

如果使用beforeEach - 承諾將得到解決多次的it節的數目。我需要解決它一次,然後測試響應。有很多測試用例,所以我想分割所有測試到it部分

回答

3

beforeAll函數僅在describe中的所有規範運行之前調用一次。

當答覆答覆時,Jest將等待答應解決,然後再讓測試運行。

describe('getData() results test',() => { 
    let data = null; 

    beforeAll(() => getData().then(response => { 
    data = response; 
    })); 

    it('foo',() => expect(data.foo).toEqual(1)); 

    it('bar',() => expect(data.bar).toEqual(2)); 

    it('bar',() => expect(data.bar).toEqual(3)); 
}); 
0

查看Jest文檔中的Async tutorial。我相信你需要這樣的事:

describe('getData() results test',() => { 
    var response; 
    beforeEach(() => { 
     response = getData(); 
    }); 

    it('foo',() => { return response.then(r => expect(r.foo).toEqual(1))}); 

    it('bar',() => { return response.then(r => expect(r.bar).toEqual(2))}); 

    it('bar',() => { return response.then(r => expect(r.bar).toEqual(3))}); 
}); 

鍵位的文檔的:

被測試應返回的承諾。

+0

在你的例子中promise會被解析3次。我需要解決一次,然後測試響應。有很多測試用例,所以我想把所有的測試都分成「它」部分 – tuchk4

+0

「應該返回正在測試的承諾。」有承諾的「坑」部分。但現在似乎'它'可以使用 – tuchk4