Rails/Rspec 视图:测试部分视图的正确方法
我有一个 Rails 3 部分,它列出了所有类别作为导航菜单 - 它位于大多数模板页面上,但不是全部模板页面上......假设大约 75%。我现在正在尝试测试部分(在 RSpec 中),并且我刚刚意识到一些事情:
目前,我正在实际视图中调用 Category.all 。困难在于,因为这涉及数据库,所以视图规范中的模拟/存根被忽略,因此测试失败。
我猜替代方法是在应用程序控制器中分配变量,然后将其作为局部变量传递给局部变量。尽管如此,我的页面中约有 25% 不会使用该变量,我想知道是否有更优雅的处理方式。
简而言之,我希望查看规范在不接触测试数据库的情况下通过,但我不确定传递给我的部分的全局变量是最好的方法......并且我没有在每个 (& ; 仅)需要它的控制器。
任何建议表示赞赏...
I have a Rails 3 partial that lists all categories as a navigation menu - it's on most, but not all of my template pages...let's say about 75%. I'm trying to test the partial (in RSpec) right now, and I've just realised a few things:
At the moment, I'm calling Categories.all in the actual view. The difficulty is that, because that touches the database, my mocks/stubs in the view spec are ignored, and consequently the test fails.
I'm guessing the alternative is to assign the variable in the application controller, and then pass it as a local variable to the partial. Still, about 25% of my pages won't use the variable and I'm wondering if there's a more graceful way of doing things.
In short, I want view specs to pass without touching the test DB, but I'm not sure a global variable passed to my partial is the best way to do it...and I'm not declaring the variable in every (& only) those controllers who require it.
Any suggestions appreciated...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不为所有类别创建一个辅助方法?
或者...
然后您可以在规范中删除此方法,并且您将不会接触数据库
Why not create a helper method for all categories?
Or...
You can then stub out this method in your specs and you won't be touching the DB