如何测试也定义为辅助方法的 ApplicationController 方法?

发布于 2024-10-12 19:59:38 字数 238 浏览 2 评论 0原文

在我的 ApplicationController 中,我有一个定义为辅助方法的方法:

helper_method :some_method_here

  • 我如何在 RSpec 中测试 ApplicationController?
  • 在测试我的视图/助手时,如何包含/调用此助手方法?

我正在使用 Rails3 和 RSpec2

In my ApplicationController I have a method defined as a helper method:

helper_method :some_method_here

  • How do I test ApplicationController in RSpec at all?
  • How do I include/call this helper method when testing my views/helpers?

I'm using Rails3 with RSpec2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感悟人生的甜 2024-10-19 19:59:38

You can use an anonymous controller to test your ApplicationController, as describe in the RSpec documentation. There's also a section on testing helpers.

摘星┃星的人 2024-10-19 19:59:38

您可以在规范中的 subject@controller 上调用辅助方法。

我一直在寻找这个问题的解决方案,但匿名控制器不是我想要的。假设您有一个位于 app/controllers/application_controller.rb 的控制器,它有一个未绑定到 REST 路径的简单方法:

class ApplicationController < ActionController:Base

  def your_helper_method
    return 'a_helpful_string'
  end

end

然后您可以在 spec/controllers/application_controller_spec 中编写测试.rb 如下:

require 'spec_helper'

describe ApplicationController do

  describe "#your_helper_method" do
    it "returns a helpful string" do
      expect(subject.your_helper_method).to eq("a_helpful_string")
    end
  end

end

虽然 @controllersubject 在这里可以互换使用,但我会选择 subject 因为它是 RSpec目前惯用的方式。

You can invoke your helper methods on subject or @controller in the specification.

I have been looking for a solution to this problem and anonymous controller was not what I was looking for. Let's say you have a controller living at app/controllers/application_controller.rb with a simple method which is not bound to a REST path:

class ApplicationController < ActionController:Base

  def your_helper_method
    return 'a_helpful_string'
  end

end

Then you can write your test in spec/controllers/application_controller_spec.rb as follows:

require 'spec_helper'

describe ApplicationController do

  describe "#your_helper_method" do
    it "returns a helpful string" do
      expect(subject.your_helper_method).to eq("a_helpful_string")
    end
  end

end

While @controller and subject can be used interchangeable here, I would go for subject as its the RSpec idiomatic way for now.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文