首页 > 解决方案 > 使用 Jest 模拟同一模块的不同值

问题描述

我试图用 jest 测试一个反应组件,我是测试新手,所以请原谅任何错误。

我多次使用不同的值遵循这个解决方案Jest 模拟模块,但问题是我有不同的组件结构。

代码 :test.tsx

import { AccountPage } from "./AccountPage";
import { Store, Symbol } from "store-provider";
   const accountStore = {
   state: {
     fetching: false,
   };

    <Store stores={[ [Symbol, accountStore] ]}>
      <AccountPage />
    </Store>

代码 : Account.tsx

import {module} from './modules';
import profile from '/profile';
export const () => {
 {module['case'] && (
  <Profile />
 )
 <div> Hello </div>
}

谁能告诉我如何开玩笑地使用渲染来运行这个场景。在将其作为单个返回组件运行链接的问题中。

我想将模块 ['case'] 模拟为真假。所以我可以测试这两种情况。

标签: javascriptreactjsunit-testingjestjs

解决方案


考虑到它case是可写的对象属性,它可以只备份和恢复而不影响其他测试:

let originalCase;

beforeEach(() => {
   originalCase = module.case;
});

afterEach(() => {
   module.case = originalCase;
});

it('...', () => {
  module.case = true;
  ...
});

it('...', () => {
  module.case = false;
  ...
});

推荐阅读