【问题标题】:Test flash notice in layout view spec (rspec2, rails3)在布局视图规范中测试闪存通知(rspec2、rails3)
【发布时间】:2010-05-02 15:46:50
【问题描述】:

我想说明我的应用程序布局视图会打印出 Flash 通知这一事实。但是下面的代码没有运行,flash 方法在视图规范中不存在(与它完美工作的控制器规范相反):

describe 'layouts/application' do
  it "renders flash notices" do
    flash[:notice] = "This is a notice!"
    render
    response.should contain "This is a notice!"
  end
end

我的代码是错误的还是 Rspec 2 中的“尚未实现的功能”?我在 Git 上的 master 分支上使用 Rails3 和 Rspec2。

谢谢!

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    有趣的是,我只是在这里搜索关于 flash 的问题,因为我在 Rails 3 beta 3 和 RSpec 2 中的身份验证黄瓜故事似乎在他们遇到 flash 通知的地方被破坏了。

    所以,我认为你是对的。在带有 RSpec2 的 Rails3 中使用 Flash 通知有一些新技巧,或者 RSpec2 没有实现这一点。

    如果您现在正尝试将 Cucumber 故事移植到 Rails3,这将非常有问题。

    【讨论】:

    【解决方案2】:

    我认为使用 Rspec 没有简单的方法可以做到这一点。但是,它是 Cucumber 的完美应用程序,您可以在其中编写如下内容:

      Scenario: Layout displays flash messages
        Given a layout
        When I render the view
        Then I should see "This is a notice!"
    

    当然,您的场景会为您的应用程序做一些独特的事情,因此您可以测试您期望的实际消息是否正在呈现。

    【讨论】:

    • 感谢您的提示,但从“功能的角度”来看,我已经在使用黄瓜了。实际上,我正在以 BDD 式的方式开发该应用程序:我编写一个特性,运行它,编写规范,运行它们,让它通过,使特性通过,重构,然后重新开始下一个特性。 Cucumber 场景在特定上下文中发生某些事件后检查页面上的特定通知,正如最终用户所期望的那样。视图规范侧重于应用程序布局视图本身的职责。其中之一是显示任何闪光通知。这就是我要在这里指定的内容。
    • 冒着听起来油嘴滑舌的风险,我建议如果您的功能看到在响应中添加了 Flash 通知,那么您的工作就完成了。用户不会关心通知是来自视图模板、布局、部分还是其他。
    • 没错,用户不会在意。这就是为什么在我的专题中没有提及视图或此类概念的原因。但从开发人员的角度来看,我想确保我的视图正确地完成它的工作,并且我可以在任何情况下依赖它的行为。无论如何,关键是我认为 Rspec2 中缺少一些东西:视图中的 flash mocking(我认为它在 Rspec1 中有效)。
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多