测试控制器时禁用渲染

发布于 2024-07-18 19:02:19 字数 193 浏览 3 评论 0原文

我正在使用 Test::Unit 和 shoulda 来测试控制器。

因为我只是测试控制器,所以我不想渲染视图。

我正在存根一些对象,渲染视图时会抛出一些错误,但测试不应该失败,因为控制器是正确的。

那么,有什么方法可以从我的测试中禁用模板/视图的渲染?

我听说 rSpec 就是这样工作的。

I'm using Test::Unit with shoulda to test a controller.

Since I'm just testing the controller I dont wanna the view to be rendered.

I'm stubbing some objects, some errors are throw when the view is rendered, but the test shouldn't fail, because the controller is correct.

So, theres any way to disable the rendering of a template/view, from my tests?

I heard that rSpec works like that.

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

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

发布评论

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

评论(2

妄司 2024-07-25 19:02:19

如果您使用 Mocha,那就很简单了。 将其添加到您的个人测试或设置方法中:

@controller.expects(:render)

如果您不这样做,那么,请使用 Mocha。

gem install mocha

然后在你的 test_helper.rb 中

require 'mocha'

If you're using Mocha, it's easy. Add this to your individual test or your setup method:

@controller.expects(:render)

If you're not, well, use Mocha.

gem install mocha

Then in your test_helper.rb

require 'mocha'
魂ガ小子 2024-07-25 19:02:19

您实际上不应该在测试中看到任何视图。 你能发布你失败的测试代码吗? 控制器(功能)测试应该仅检查调用您的操作时是否正在发生特定操作。 即它应该检查它是否呈现正确的视图或重定向到不同的操作。 您还可以检查闪光灯的设置或视图的其他变量。 这是您正在测试的类型吗?

这是一个使用来自 shoulda 文档的 get 请求来测试显示操作的好例子:

class UsersControllerTest < Test::Unit::TestCase
  context "on GET to :show" do
    setup { get :show, :id => 1 }

    should_assign_to :user
    should_respond_with :success
    should_render_template :show
    should_not_set_the_flash

    should "do something else really cool" do
      assert_equal 1, assigns(:user).id
    end
  end
end

也许看看 rails 指南 这也相当不错。

You shouldn't really be seeing any view in your tests. Can you post up your failing test code? The controller (functional) tests should only be checking that a particular action is occurring when your action is called. I.e it should check that it renders the correct view or redirects to a different action. You can also check the setup of the flash or other variables for the view. Is this the type of this you are testing for?

Here is a good example of testing a show action with a get request taken from the shoulda docs:

class UsersControllerTest < Test::Unit::TestCase
  context "on GET to :show" do
    setup { get :show, :id => 1 }

    should_assign_to :user
    should_respond_with :success
    should_render_template :show
    should_not_set_the_flash

    should "do something else really cool" do
      assert_equal 1, assigns(:user).id
    end
  end
end

Maybe take a look at rails guides which is pretty good too.

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