【发布时间】:2011-06-06 11:41:43
【问题描述】:
我的网络应用有一个类用于分析和操作存储在 URL 哈希中的数据,类似于
http://myapp.com/#!/location/hornsea/season/spring/facilities/+shop+swimming-airport/size/50
为了能够对各种排列进行单元测试,我将一些 URL 片段存储在一个对象中(例如
var fragments {
valid: ["/location/hornsea", "/season/winter","/size/50"],
invalid: ["location/hornsea", "/seasonwinter","/size/fifty"]
}
然后在运行我的测试之前,我动态构建所有可能的有效和无效 url,然后循环遍历这些,为每个 url 添加一个测试。
当我运行 url 的有效性测试时这很好,因为我只是在我的 isValid() 方法中检查 true 或 false,但是在测试从 URL 获取参数时我不知道如何解决问题 - 我必须将返回值(例如 {location: "hornsea""})与预期值进行比较,但是由于要分析的字符串是在运行测试之前动态构造的,所以我没有预期值存储在任何地方。
现在,我不确定我的方法是否矫枉过正——我是否应该关心在所有可能的 url 结构上测试所有方法?我是否可以在很容易的时候设置针对所有可能的 url 运行的测试,但是当我需要更好地控制测试时针对更易于管理的子集运行,但仍然设法涵盖所有可能发生的情况。即我可以编写一个测试套件来测试
http://myapp.com/season/autumn
足以涵盖以下示例。
http://myapp.com/location/dungeness/season/autumn
http://myapp.com/location/camberwell/seasonautumn
我怎么能确定我没有留下任何空白?是否有针对此类问题的通用方法,或者它是否针对特定应用程序非常具体?
【问题讨论】:
标签: javascript unit-testing batch-processing