这个答案让我很生气,因为我从来没有理解过如何处理动态语言中的参数类型与来自 Java 的静态语言(我的观点被告知或变形 - 如你所愿)。
给定一个采用动态语言参数 bar 的方法 foo,在编译时不强制执行 bar 的类型。上面链接的答案(以及我通常看到的答案)是您需要使用动态语言正确进行单元测试。
但在某些时候,单元外的某些东西会调用该方法。假设这是一个重量级的对象,将在任何使用它的类的单元测试中被模拟。现在你有很多类调用这个方法,你需要改变类型。为简单起见,它曾经接受一个数字,但现在需要一个字母数字,并且您需要使用专门用于字符串而不是具有新要求的数字对象的方法。
您如何更改它并知道调用代码将被修复?当然,如果您只是更改它,您的单元测试将失败,但由于您需要故意更改它,因此您表面上会修复您的单元测试。你怎么知道修复调用代码?我的意思不仅仅是概念上你知道多少,我的意思是你怎么知道你已经找到了所有的调用者并且真的可以说它已经改变了。
似乎只有非常全面的集成测试才能为您提供保证。我错过了什么吗?