gpt4 book ai didi

ruby-on-rails - 在 Controller 规范 (rspec) 中测试设计和 cancan

转载 作者:行者123 更新时间:2023-12-02 02:25:52 25 4
gpt4 key购买 nike

现在我的 CanCan 和 Devise 工作得很好,我需要添加到我的测试中。

我是否应该期望测试数量翻倍,甚至更多?我需要以“访客”用户身份测试所有内容,然后以用户身份和管理员身份进行测试。

对于 rspec,您将如何布局?

describe "GET edit" do
login_admin
it "assigns the requested forum_topic as @forum_topic" do
ForumTopic.stub(:find).with("37") { mock_forum_topic }
get :edit, :id => "37"
response.should redirect_to( new_user_session_path )
end

it "assigns the requested forum_topic as @forum_topic" do
ForumTopic.stub(:find).with("37") { mock_forum_topic }
get :edit, :id => "37"
assigns(:forum_topic).should be(mock_forum_topic)
end
end

辅助模块

  def login_admin
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:admin]
sign_in Factory.create(:admin)
end
end

def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = Factory.create(:user)
sign_in @user
end
end

最佳答案

测试CanCan时通常做的是测试能力文件本身。

例如,如果您正在您的应用程序中进行测试,除非您已签名,否则您不应该能够查看某个论坛,您可以像这样进行测试:

@user = Factory.create(:user)
@forum = Factory.create(:forum)

describe "User ability" do
it "Should be able to view forums" do
@ability = Ability.new(@user)
@ability.should be_able_to(:show, @forum)
end
end

describe "nil ability" do
it "Should be not be able to view forums if not signed in" do
@ability = Ability.new(nil)
@ability.should_not be_able_to(:show, @forum)
end
end

这只是一个例子。

您可以在以下位置阅读更多相关信息:https://github.com/ryanb/cancan/wiki/Testing-Abilities

最后为了测试设计,我只对 capybara 进行了集成测试,并使用管理员和用户登录。

关于ruby-on-rails - 在 Controller 规范 (rspec) 中测试设计和 cancan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973339/

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