gpt4 book ai didi

ruby-on-rails - IntegrationTest 与 Mocha, stub HelperMethod (Ruby)

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:29 25 4
gpt4 key购买 nike

我有一个辅助方法:

has_permission?

在一个名为的模块中:

module ApplicationHelper

在应用程序/助手内部。

我还有一个包含它的 IntegrationTest:

include ApplicationHelper

我的集成测试通过 get 请求调用我的 Controller 之一。

待命时,我想测试我的集成测试是否到达某个方法。

在这种方式下必须通过一些方法,其中之一是

has_permission?

为了确保此方法通过,我想对其进行 stub 。

Object.any_instance.expects(:has_permission?).returns(false) Doesn't work

ApplicationHelper.expects(:has_permission?).returns(false) Doesn't work either because it's not a static method.

有没有一种方法可以在测试中 stub helpers 非静态方法,这样我就可以让它在所有情况下都返回 false?

测试:

test "test try to edit without permission" do
@curr = users(:me)
sign_in @curr

SellingController.expects(:validate).never

post enable_update_user_selling_path(id: @user, params: {user: {sell: "1"}})

结束

最佳答案

在尝试找出如何在 Rails 5 的 ActionDispatch::IntegrationTest 中 stub ApplicationHelper 方法时偶然发现了这个问题;不确定这是否正是您想要实现的目标,但我最终做了这样的事情

MyController.view_context_class.any_instance.expects(:my_method).returns(true)

看起来好像从 Rails 5 开始,辅助方法不再简单地直接混合到 Controller 类中,因此 view_context_class 位。

似乎有效,希望这对某人有帮助!

关于ruby-on-rails - IntegrationTest 与 Mocha, stub HelperMethod (Ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com