gpt4 book ai didi

ruby-on-rails - capybara NoMethodError : undefined method `visit' for

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

感谢回复。
我在应用程序中遇到错误 Git application with the error

Failures:

1) Page pages page creation with invalid information should not create a page
Failure/Error: before(:each) { visit new_admin_page_path }
NoMethodError:
undefined method `visit' for #<Page:0x00000005094bb0>
# ./spec/requests/page_request_spec.rb:13:in `block (3 levels) in <top (required)>'

2) Page pages page creation with invalid information error messages
Failure/Error: before(:each) { visit new_admin_page_path }
NoMethodError:
undefined method `visit' for #<Page:0x000000051671f0>
# ./spec/requests/page_request_spec.rb:13:in `block (3 levels) in <top (required)>'

Finished in 1.21 seconds
14 examples, 2 failures

我错过了什么?

最佳答案

我克隆了您的存储库并运行了规范。问题是您正在使用术语 page对于两个不同的事物, capybara 页面( subject { page } )和您的模型名称为 Page (您也将其命名为 page )。这两个名称冲突,这就是为什么 rspec 提示没有方法 visit对于 #<Page:0x00000005094bb0> .

要解决这个问题,只需重命名您在初始 let 中创建的页面:

let(:mypage) { Factory.create(:page) }

这将通过命名您的页面模型来避免冲突 mypage而不是 page .

但是还有其他问题。您的用户工厂不使用序列来分配电子邮件,因此您会收到验证错误,因为它表示电子邮件已被占用。

我将您的用户工厂更改为:

sequence(:email) { |n| "abc#{n}@example.com"}
factory :user do
email
password "foobar"
password_confirmation "foobar"
...

这修复了验证错误,但您现在遇到了另一个错误。在您的第一个规范的行中,您应该检查 count class 没有变化 Page ,不是记录 page (或 mypage )。

因此将其更改为:

expect { click_button "Create Page" }.not_to change(Page, :count)

仍然会给您留下错误,因为您也没有任何create为您采取行动 PagesController .从您写的内容来看,信息似乎无效,因此甚至不应该执行此操作。我不知道你到底想在这里做什么,所以我会把剩下的留给你自己弄清楚。

关于ruby-on-rails - capybara NoMethodError : undefined method `visit' for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12485140/

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