繁体   English   中英

如何测试 jest 模拟模块

How to test jest mock module

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

// utils.js
var someModule = require('someModule');

someModule.setKey('API_KEY');

我想测试setKey功能。 所以我写了下面的单元测试用例。

jest.mock('someModule, () => {
   return {
     setKey: jest.fn()
   }
})

describe('utils', () => {
   afterEach(()=> {
      jest.clearAllMocks()
   })

   it(`test case 1`, () => {})

   it(`test case utils`, () => {
       expect(someModule.setKey.mocks.calls).toHaveLength(1)
   })
});

最后一个测试用例失败,但是如果我将最后一个测试用例作为第一个移动,那么它就可以工作。 由于没有执行clearAllMocks函数。

应该有什么好方法来测试呢?

1 个回复
// utils.js
var someModule = require('someModule');

someModule.setKey('API_KEY');

我想测试setKey功能。 所以我写了下面的单元测试用例。

jest.mock('someModule, () => {
   return {
     setKey: jest.fn()
   }
})

describe('utils', () => {
   afterEach(()=> {
      jest.clearAllMocks()
   })

   it(`test case 1`, () => {})

   it(`test case utils`, () => {
       expect(someModule.setKey.mocks.calls).toHaveLength(1)
   })
});

最后一个测试用例失败,但是如果我将最后一个测试用例作为第一个移动,那么它就可以工作。 由于没有执行clearAllMocks函数。

应该有什么好方法来测试呢?

1 每次测试的Jest Mock模块

我对在Jest中嘲笑如何对实现进行单元测试感到困惑。 问题是我想嘲笑不同的预期行为。 有什么办法可以做到这一点? 因为导入只能在文件的顶部,并且为了能够模拟某些内容,因此必须在导入之前声明它。 我也尝试过传递局部函数,以便覆盖行为,但开玩笑抱怨您不允许传递任何局部函数。 您可以想象内部在the ...

2 如何在 Jest 中模拟模块

我试图在 Jest 中嘲笑我的一个动作创建者。 实际上,我正在测试我的 React 组件。 我需要检查是否在某个事件上调用了 action-creator 函数。 我试图通过jest.mock模拟该函数,但抛出错误说: 这是我迄今为止尝试过的,但它不起作用: describe('>> ...

3 如何在 Jest 的同一测试套件中的测试之间清除模块模拟?

我嘲笑了一些 nodejs 模块(例如,其中之一是fs )。 我将它们放在__mocks__文件夹(同级别 als node_modules )文件夹中,并且模块模拟工作。 但是,无论我使用哪个“测试清除之间”选项,下一个测试都不是“沙盒化”的。 这里出了什么问题? 模拟fs模块的一个非常简化的示 ...

4 如何使用Jest模拟仅一个测试文件的模块?

我正在使用Jest ,我想从另一个模块中模拟一些功能(我们称其为dependency )。 我能够全局模拟dependency ,将其放在__mocks__文件夹中的__tests__文件夹中。 不幸的是,我需要所有其他测试的实际dependecy 。 因此,如何指定仅当在file ...

6 如何使用Jest Mock模块测试Redux Thunk异步操作

下面的代码段是我的交易操作。 我可以使用__mocks__来模拟doFetchTransactions函数,但这仅涵盖了didFetchTransactionsSuccessful情况。 如何使其也涵盖失败案例? 我正在尝试做的但失败了(我认为这是由于只require一次加载依赖而导 ...

7 如何使用 Jest 仅为特定测试模拟模块的功能

我需要模拟依赖项的功能,但仅适用于特定的测试用例。 在我的其他测试中,我想保持模块不变。 我也在嘲笑其他模块。 那些需要保持嘲笑。 我尝试了多种方法,因为已经提出了这个问题的许多变体,但是由于我需要在未模拟时使用原始模块,因此其他解决方案似乎都不起作用...... 这是我需要的示例 ...

10 如何在 Jest 中模拟每个测试隐式依赖的模块?

我有一个集成测试,我对 MongoDB 数据库进行了实际的 DB 调用。 但是为了测试事务是否过期,我需要为该特定 test 模拟数据库。 我进行实际数据库调用的原因有很多,我只是为了这个例子才提到状态。 Jest 具有jest.doMock函数,但这仅在我想在测试中导入该函数时有用,但在我的情 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM