gpt4 book ai didi

ruby-on-rails - 如何使用参数在 Controller 中为私有(private)方法编写 rspec

转载 作者:行者123 更新时间:2023-12-01 05:37:55 25 4
gpt4 key购买 nike

我有 Controller

class ApplicationController < ActionController::Base
def index
end

private

def handle_login_sequence
username = params[:userName]
password = params[:password]

cookies[:locale] = params[:locale]
remember = params[:remember]

username_locked = User.locked_username?(username)
user = User.authenticate(username, password)

if user && user.has_portal_access?
case user.account_status
when AccountStatus::Active
flash[:error] = 'login'
end
end
end

end

我想为这个私有(private)方法写 Rspec
@controller = ApplicationController.new
@controller.send(:handle_login_sequence)

通过上面的代码,我可以调用 handle_login_sequence方法,但我不知道如何通过以下内容:
params[:userName], params[:password], params[:locale], params[:remember] 

最佳答案

您不应该直接测试 Controller 的私有(private)方法。相反,测试使用此方法的 Controller 操作。

不要忘记关于 Controller 的黑盒隐喻。

Black Box testing diagram

如果您测试私有(private)方法,当您想要更改实现而不是接口(interface)时,您将不得不重写测试。黑盒测试将帮助您确保在不直接测试私有(private)方法的情况下没有破坏 Controller 功能。

关于ruby-on-rails - 如何使用参数在 Controller 中为私有(private)方法编写 rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607419/

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