使用rspec或类似的,是否可以测试模板逻辑正确的视图页面?
e.g。说我的模型更改,我的表单标记助手正在引用一个不再存在或重命名的模型属性。
我可以测试渲染模板以查看它是否中断?
答案 0 :(得分:1)
当您浏览RSpec文档时,您会注意到它非常坚持模型,视图和控制器测试保持独立,并且不同层的测试之间的交互最少(严重依赖于模拟)。所有图层组合在一起的方式更多地落入集成测试领域。如果您设置了一套不错的集成测试,那么当你破坏对另一层产生影响的东西时,你将不可避免地注意到这一点,如你所描述的那样。
您可以使用RSpec进行此类集成测试(请参阅RSpec文档中的集成模式),但它相当繁琐且简单明了:
response.should have_tag("input[name=?]", "foo")
集成模式将调用您的控制器并呈现相关视图,此时视图将拒绝渲染,因为它调用不存在的模型方法(在这种情况下,它甚至不重要)在你看来测试)。
或者你可以去黄瓜/牛排/等路线(从长远来看这可能是一个更好的主意)。