在接口提供者和使用者之间,存在与生俱来的矛盾。第三方程序包和框架提供者追求普适性,这样就能再多种环境中工作,从而吸引广泛的用户。而使用者则想要得到集中满足特定需求的接口。这种矛盾会导致系统边界上出现问题。
学习性测试
为要使用的第三方代码编写测试,可能是最符合开发者的利益。学习第三方代码很难,整合第三方代码也很难,同时做这两件事难上加难。但是我们可以尝试不同的做法,比如不要在生产代码中实验新东西,而是编写测试来浏览和理解第三方代码。Jim Newkirk把这种叫做学习性测试。
在学习性测试中,我们就想在应用中那样调用第三方代码。我们基本上是在通过核对试验来检测自己对那个API的理解程度。测试聚焦于我们想从API得到的东西。
边界上的代码需要清晰的分割和定义了期望的测试。应该避免我们的代码过多的了解第三方代码中的特定信息。依靠你能控制的东西,好过依靠你控制不了的东西,免得日后受它控制。