【发布时间】:2011-11-09 20:38:08
【问题描述】:
我正在测试一个脚本,该脚本在给定一些参数的情况下,将数据从我们的 API 复制到我们 CDN 上的某个位置。
但是,这种情况会不断变化。我应该如何为其添加测试?也许在给定一些参数时向 API 添加一些总是返回相同内容的东西?
谢谢!
【问题讨论】:
标签: unit-testing testing tdd
我正在测试一个脚本,该脚本在给定一些参数的情况下,将数据从我们的 API 复制到我们 CDN 上的某个位置。
但是,这种情况会不断变化。我应该如何为其添加测试?也许在给定一些参数时向 API 添加一些总是返回相同内容的东西?
谢谢!
【问题讨论】:
标签: unit-testing testing tdd
您正在触及单元测试的一个非常重要的方面:它迫使您编写“好的”代码。如果您希望您的代码能够在您所描述的那种情况下成功测试,您必须使用像 inversion of control 和 separation of concerns 这样的良好实践。
换句话说,要编写成功的测试,您需要抽象出您的依赖关系,最好是接口。然后,您可以通过注入该接口的stub 或mocked 实现来运行测试,该接口具有可重现和可控的输出。通过这样做,您只测试被测单元的逻辑(行为或状态,取决于口味),而不是您的依赖项。它会强制您分离关注点。
(我会举例,但您没有指定您使用的是哪种语言)
【讨论】:
我并不是想成为一个聪明人,但是,如果您没有明确的期望,那么您在测试中就没有什么可断言的。
测试应该存在的所有内容。如果您不关心输出的某些部分,只需测试它的存在。如果输出中的某些内容应该存在相关性,请对其进行测试。
【讨论】:
你的答案有一个开始。要测试您的脚本,您需要一个测试框架,该框架允许您向脚本提供已知的输入状态、捕获输出并检查输出的正确性。
不清楚“this”(不断变化)的指称是什么。 CDN 上的位置?如果是这样,您需要冻结该位置以进行测试。
【讨论】: