首页 > 解决方案 > 在开玩笑的单元测试中使用 javascript 模拟静态类

问题描述

我有一个类和几个静态的。

export default class AccountActions {
  static LIST_REQUEST = 'ACCOUNT_LIST_REQUEST';
  static LIST_UPDATE = 'ACCOUNT_LIST_UPDATE';
  static ACCOUNT_ROUTE_REQUEST = 'ACCOUNT_ROUTE_REQUEST';
  // ... a lot more...

我正在尝试为这个类编写一些单元测试,我正在努力理解它返回的一些错误。

这是我最初的测试

import AccountActions from './account'
import AuthActions from './auth';

jest.mock('../app');
jest.mock('../client');
jest.mock('../tracking', () => ({
    trackActivity: jest.fn(),
}));

let placeholder: Object = {};

describe('Account Action Creators Unit Tests:', () => {
    test('accountListRequest dispatches appropriate actions after failed GET', () => {
        placeholder.getAccountRouting = AccountActions.getAccountRouting;
        const thunk = AccountActions.accountsListRequest();

我的减速机是

export function accountReducer(state: Object = defaultState, action: Object) {
  switch (action.type) {
    case AccountActions.LIST_REQUEST:
        return { ...state, account_list_loading: true };

返回的错误是

TypeError:无法读取未定义的属性“LIST_REQUEST”

所以我试图模拟accountActions。jest.mock('./account');然后返回的错误变为:

类型错误:thunk 不是函数

什么是模拟的最佳方式,AccountActions因为它似乎总是返回 undefined ?

标签: javascriptreactjsunit-testingjestjsredux-thunk

解决方案


推荐阅读