Javascript 我是否应该(静态)对第三方代码进行类型检查(例如使用Flow)?

Javascript 我是否应该(静态)对第三方代码进行类型检查(例如使用Flow)?,javascript,unit-testing,types,tdd,typechecking,Javascript,Unit Testing,Types,Tdd,Typechecking,我在编写第一个单元测试时特别遇到了这个问题。静态类型检查这些第三方代码似乎是不对的,例如Enzyme/React test utils函数的返回值类型和测试框架的回调函数类型 我只是觉得第三方API是这样的,太长了,很可能需要测试 编辑:澄清了当我说类型检查时,我指的是静态类型检查,如流,而不是通过单元测试。这里有两个方面: 验证第三方库的完整性不是您的责任。您不应该涉足测试他人交付的业务 另一方面:编写良好的测试是探索此类第三方组件的好方法 更重要的是:一套编写良好的测试代表了您对该组件期

我在编写第一个单元测试时特别遇到了这个问题。静态类型检查这些第三方代码似乎是不对的,例如Enzyme/React test utils函数的返回值类型和测试框架的回调函数类型

我只是觉得第三方API是这样的,太长了,很可能需要测试


编辑:澄清了当我说类型检查时,我指的是静态类型检查,如流,而不是通过单元测试。

这里有两个方面:

  • 验证第三方库的完整性不是您的责任。您不应该涉足测试他人交付的业务
  • 另一方面:编写良好的测试是探索此类第三方组件的好方法
更重要的是:一套编写良好的测试代表了您对该组件期望的规范。一个可以自动执行的规范

意思是:您可以保留这些测试,并在以后使用它们来验证该组件的较新版本是否仍能执行您期望的操作


换句话说:您应该平衡这两点;例如,通过将您的测试限制为您自己的代码使用的重要功能。

如果您问是否应该在代码库中添加专门测试第三方软件包的单元测试,不,我不会这样做。他们可能会更新他们的软件包,您的测试将失败-哟你无法控制(除非你决定永远不更新)

如果您想确保单元测试有测试,最好通过拉式请求将单元测试添加到它们的代码库中。否则,您应该只测试代码


如果您想编写包含其他软件包的端到端测试,这很好。但我不会为它们进行单元测试。这属于它们的源代码。

谢谢@mariocch!对不起,我不清楚,我编辑了我的问题,以澄清我的意思是通过静态类型检查器(如Flow)进行类型检查,而不是通过单元检查ting。(我认为,如果一起完成,这将是不必要的冗余,对吗?)但我认为即使是静态类型检查,您的答案仍然适用,对吗?我也会通知您,@GhostCat。谢谢!