Redux 异步action 单元测试求教

#1

函数示例:

export function fetchCompaniesAll({ sid, location }) {
  let qs = {};
  qs.page = location.query.p ? location.query.p : 1;
  qs.page_count = location.query.page_count ? location.query.page_count : 500;
  return ({ fetch }) => ({
    type: FETCH_COMPANIES_ALL,
    payload: {
      promise: fetch().fetchCompaniesAll({ qs })
        .then(res => {
          return res.body;
        }).catch(err => {
          throw err;
        })
    }
  })
}

actions被传递的middlewares:

const dependenciesMiddleware = injectDependencies({ fetch }, { validate });
  const middleware = [
    dependenciesMiddleware,
    promiseMiddleware({
      promiseTypeSuffixes: ['START', 'SUCCESS', 'ERROR']
    })
  ];
 const createStoreWithMiddleware = applyMiddleware(...middleware);

fetch 和validate这两个,validate是个验证的,fetch是封装的SDK实例,封装的请求api的接口。
相关代码

export default function fetch(sid) {
  if (typeof sid !== 'undefined') {
    return new Mirana({ sid });
  } else {
    return new Mirana();
  }
}

看了好多相关的测试文章,也没找到太明确的资料,希望老司机带带方向。

#2

我也为这个问题找了1天,安利下我写的解决方案:
redux async action 轻松搭建测试环境