导出仅用于测试的功能是否被认为是不好的做法?

时间:2019-06-28 05:59:31

标签: javascript node.js reactjs testing design-patterns

尤其是在阅读了有关测试React组件的官方redux文档之后,我有这个问题:

https://github.com/reduxjs/redux/blob/master/docs/recipes/WritingTests.md

  

为了能够在无需处理装饰器的情况下测试App组件本身,我们建议您还导出未装饰的组件

即使著名的https://www.reactboilerplate.com/导出也将未连接的组件命名为只是为了能够在不模拟商店的情况下对其进行测试。

但是,导出某些内容以使其更易于测试是否不是很糟糕?

在某些情况下,开发人员可能由于从文件中导出了两件事而导致错误的导入并引入了错误。

因此,问题本质上是:

我们可以更改实际代码以简化测试吗?

尽管这个问题是React特有的,但很高兴知道其他语言或框架是否存在类似问题以及如何处理。

1 个答案:

答案 0 :(得分:1)

您始终可以根据您的环境进行条件导出。

类似:

export default connect(mstp, mdtp)(component1);

export let tests = {
  component1,
  component2,
  ...
};

if (process.env.NODE_ENV !==   "test") {
  tests = undefined;
}

然后在测试文件中完成

import { tests} from ".";
const { component1, component2 } = tests;
//now test unconnected components