使用视图变量交叉检查控制器变量的快速方法?

问题描述:

是否有一个快速(命令OR gem OR测试框架)来确保所有View变量指向Controller变量?使用视图变量交叉检查控制器变量的快速方法?

我在一个Rails应用程序中查看变量拼写错误,因此没有显示在Controller中调用的数据。例如,@person.name未显示在视图中。

Controller 
|- @person.name = 'first' 
|- @person.email = '[email protected]' 
|- @person.cell = '123-456-7890' 

View 
|- display @person.nameE # => NoMethodError 
|- display @person.email # => [email protected] 
|- dispaly @person.cell  # => 123-456-7890 

这将导致@person.name不显示上,因为它被不正确地指向视图。

实际上,@person.nameE不会返回零 - 它会提高NoMethodError。只要你有一个测试加载该视图,当你运行它时你会看到它爆炸。

+0

什么样的测试framworks会做到这一点? – westonplatter 2012-02-22 01:42:42

+0

几乎所有的事情都会做!如果你在测试框架中寻找黄金标准,我会从Test :: Unit开始。 [Ruby on Rails测试指南](http://guides.rubyonrails.org/testing.html)对如何测试Rails应用程序有一些很好的指导。 – Veraticus 2012-02-22 01:53:24

+0

我查看了测试指南,并且有代码来测试特定HTML对象的存在。如果你知道你想测试什么,这很好,但是可以通过扩展来随着视图的HTML对象的变化而动态增长? – westonplatter 2012-02-22 05:34:50

我相信这只是一种你必须忍受的痛苦。这是使用解释型语言时发生的典型问题。你所能做的就是编写测试来防止这种情况发生。

如果你想确保你写了一个视图规范/测试。

不幸的是,没有办法确保在视图中访问的变量或方法在控制器中正确设置。其他海报是正确的 - 它会引发一个NoMethodError,这是为它编写一些测试的最佳实践。

+0

但是测试是否可以动态更新?根据我在[Rails Testing Guide 4.6](http://guides.rubyonrails.org/testing.html)中看到的,测试是静态定义的。 – westonplatter 2012-02-22 15:10:42