我不能为我的生活弄清楚为什么这些测试失败了。
当用户输入他们的电子邮件/密码并点击登录按钮时,他们会被重定向到他们的个人资料页面,该页面将他们的名字放在标题中并在页面上显示他们的名字。它还会显示指向其个人资料和退出链接的链接。当我浏览浏览器中的所有步骤时,它应该是应有的位置,但是当rspec运行时,它仍然会失败。
我觉得很奇怪的是,当我运行一个测试相同元素的user_page_spec测试时,那些都会通过。
我认为它与click_button部分或控制器中的“redirect_to用户”有关,但任何见解都会非常感激。
以下是测试 -
在user_pages_spec.rb中传递测试 -
describe "profile page" do
let(:user) { FactoryGirl.create(:user) }
before { visit user_path(user) }
it { should have_selector('h1', text: user.firstName) }
it { should have_selector('title', text: user.firstName) }
end
authentication_pages_spec.rb中的测试失败 - 需要'spec_helper'
describe "Authentication" do
describe "sign in" do
.
.
.
describe "with valid information" do
let(:user) { FactoryGirl.create(:user) }
before do
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_button "Log in"
end
it { should have_selector('title', text:user.firstName) }
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
describe "followed by signout" do
before { click_link "Sign out" }
it { should have_link('Home') }
end
end
end
end
答案 0 :(得分:0)
烨。它总是最简单的疏忽导致最大的头痛。
发生了什么事。
而不是使用以下 -
describe "page" do
it "should have something" do
page.should have_selector('')
end
end
Rspec允许您定义主题 -
subject { page }
允许您将第一个代码块简化为以下内容 -
subject { page }
describe "page" do
it { should have_selector('') }
end
这允许您运行多个引用该页面的测试而无需额外输入。
我在最顶层遗漏了主题{page},所以我的{}}块都不知道该引用什么。一旦添加,所有测试都没有问题。
希望将来帮助其他人。