4

对执行重定向的控制器操作进行单元测试的正确方法是什么?

更新:我是 CFWheels 项目的核心开发人员。我问这个问题的全部原因是目前我正在努力增强我们拥有的内置测试框架,我想知道如何在 CFWheels 中处理和实现类似的东西,以使开发人员更容易测试他们的应用程序.

更新:我想出了如何测试这个。看来我们将不得不稍微重写轮子控制器的内部结构,以便在操作完成后并在它被传递回调度程序之后执行重定向。这种方法的唯一问题是,除非您事先采取适当的预防措施,否则将运行 redirectTo() 之后的任何代码;这包括在 redirectTo() 语句之后放置 return 或在您的操作中放置条件检查以将 redirectTo() 代码与其他代码隔离。它还涉及确保执行 redirectTo() 后不会呈现任何其他内容。

4

2 回答 2

3

如果你将重定向机制分解为多个函数,这样的东西会变得更容易测试:a) 一个确定目标 URL 的函数和 b) 一个执行重定向的函数。

这样,您可以非常轻松地测试 functionA,而 functionA 就是您想要测试的那个。这是写的代码。这是你真正的逻辑所在。FunctionB 不是您的代码;这是ColdFusion的胆量,测试CFLocation没有多大意义。

如果您的任务是实现 100% 的测试覆盖率,那么您可以对 functionA 进行 10 次测试,在其中执行逻辑的所有不同分支,然后对 functionB 进行一次测试,以 Terry 建议的方式执行重定向;所以以这种方式,你只会得到 1 个慢速测试而不是 10 个。

您可以将此方法推广到其他场景:文件系统、Web 服务、http、ftp、电子邮件等:“从您无法控制和不想测试的内容中提取您可以控制和想要测试的内容"

于 2010-02-22T10:16:50.317 回答
2

您可以使用重定向设置为 false 的 cfhttp 调用具有适当 URL 的控制器。然后测试生成的 cfhttp 结果结构,它应该包含有关重定向会将您带到哪里的信息。

于 2010-02-19T13:26:18.163 回答