如何嘲笑不同的反应?

时间:2018-10-17 16:09:29

标签: reactjs jestjs

我的测试文件中有:

describe('component', () => {
   globals.Globalfunct = {
    testfunc: jest.fn().mockReturnValue('something)
   }
   it('is a test', () => {

   })
   it('is another test', () => {
     // in here I want testfunc to return something else, how can I do this?
   })
}

我基本上希望开玩笑的模拟函数testFunc每次都返回不同的东西。我怎样才能做到这一点?

我也无法让mockImplementation工作

1 个答案:

答案 0 :(得分:0)

假设您每次都需要不同的随机字符串...

describe('component', () => {
   globals.Globalfunct = {
    testfunc: jest.fn().mockReturnValue('foo'),
   }

   beforeEach(() => {
      const randomStr = Math.random().toString(36).substring(7);
      globals.Globalfunct.testfunc = jest.fn().mockReturnValue(randomStr);
   });

   it('is a test', () => {

   })
   it('is another test', () => {
     // in here I want testfunc to return something else, how can I do this?
   })
});

说明

如果您有一个beforeEach函数(official docs),它将在每个测试用例之前调用它。在上面的代码中,它将在每次测试之前将模拟函数更改为jest函数的另一个实例,从而为每个测试用例提供新的不同答案。