2016-09-19 105 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