如何在 ActionController TestCase (Rails 3.0.9) 中禁用渲染视图

发布于 2024-11-19 21:52:44 字数 176 浏览 5 评论 0 原文

禁用 ActionController::TestCase 实际渲染视图的正确方法是什么? 或者,在测试中渲染没有布局的视图的方法是什么?

使用 rr,我尝试过 Stub(@controller).render { "" }

但这破坏了assert_template断言。

谢谢!

What's the proper way to disable ActionController::TestCase to actually render the views?
Alternatively, what'd be the way to render the view without the layout in the tests?

Using rr, I've tried
stub(@controller).render { "" }

but this broke the assert_template assertions.

Thanks!

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

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

发布评论

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

评论(3

梦醒灬来后我 2024-11-26 21:52:44

我遇到了同样的问题,即仅禁用布局,同时仍然渲染主视图。对于 rspec 模拟,这对我有用:

@controller.stub(:layout).and_return(false)

我从未使用过 rr,但我想语法可能如下:

stub(@controller).layout { false }

I had the same problem of disabling just layout, while still rendering the main view. With rspec mocks this works for me:

@controller.stub(:layout).and_return(false)

I've never used rr, but I would imagine the syntax might be as follows:

stub(@controller).layout { false }
夜夜流光相皎洁 2024-11-26 21:52:44

我想在 Rails 6 中执行此操作。使用 mocha gem:

ActionController::Metal.any_instance.stubs(:process).returns

对于其他版本的 Rails,确定答案的最简单方法是将 puts caller 添加到您的操作中并扫描回溯。找一些看起来很容易存根的东西并尝试一下。

I wanted to do this in Rails 6. With the the mocha gem:

ActionController::Metal.any_instance.stubs(:process).returns

For other versions of Rails, the easiest way to determine the answer is to add puts caller to your action and scan the backtrace. Find something that looks easy to stub and try it.

卷耳 2024-11-26 21:52:44

默认情况下它是禁用的。

如果你想启用你可以:

1)在spec_helper中调用它:

config.render_views

2)将此语句放在你的控制器测试类中:

render_views

如果你想禁用它,只需添加一个错误参数,例如:

render_views false

参考:https://www.relishapp.com/rspec/rspec-rails/v/2-5/docs/controller-specs/render-views

It is by default disabled.

If you want to enable you can:

1) call this in spec_helper:

config.render_views

2) put this statement inside your controller test class:

render_views

If you want to disable it, just add a false parameter like:

render_views false

Reference: https://www.relishapp.com/rspec/rspec-rails/v/2-5/docs/controller-specs/render-views

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