单元测试执行重定向的控制器操作的正确方法是什么?
更新:我是CFWheels项目的核心开发人员。我问这个问题的全部原因目前我正在努力增强我们的内置测试框架,我想知道如何在CFWheels中处理和实现类似的东西,以便开发人员更容易测试他们的应用程序
更新:我想出了如何测试这个。似乎我们将不得不重写轮子控制器内部有点以在动作完成之后以及在它传递回调度员之后执行重定向。这种方法唯一的一点是,如果你事先采取适当的预防措施,redirectTo()之后的任何代码都将运行除外;这包括在redirectTo()语句之后放置一个返回值,或者在您的操作中放置条件检查以将redirectTo()代码与其他代码隔离开来。它还涉及确保在执行redirectTo()后不会呈现任何其他内容。
答案 0 :(得分:3)
如果你将重定向机制分解为多个函数,这样的东西变得更容易测试:a)确定目标URL的函数和b)执行重定向的函数。
这样,您可以非常轻松地测试functionA,而functionA就是您想要测试的那个。这是你编写的代码。这是你真正的逻辑所在。 FunctionB不是你的代码;它是ColdFusion的胆量,测试CFLocation没有多大意义。
如果您正在执行100%测试覆盖率的任务,那么您可以为functionA花费10个测试,在这里您可以运用逻辑的所有不同分支,然后对functionB进行一次测试,以便以下述方式执行重定向:特里建议;因此,通过这种方式,您只能获得1个慢速测试,而不是10个。
您可以将此方法概括为在其他方案中使用:文件系统,Web服务,http,ftp,电子邮件等:“提取您可以控制的内容,并希望从您无法控制的内容进行测试,而不是想要测试“
答案 1 :(得分:2)
您可以使用cfhttp使用相应的URL调用控制器,并将redirect设置为false。然后测试生成的cfhttp结果结构,它应该有关于重定向将带你去的地方的信息。