我如何通过这个rspec测试?

时间:2013-04-14 02:50:52

标签: ruby-on-rails testing rspec tdd

我不能为我的生活弄清楚为什么这些测试失败了。

当用户输入他们的电子邮件/密码并点击登录按钮时,他们会被重定向到他们的个人资料页面,该页面将他们的名字放在标题中并在页面上显示他们的名字。它还会显示指向其个人资料和退出链接的链接。当我浏览浏览器中的所有步骤时,它应该是应有的位置,但是当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

1 个答案:

答案 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},所以我的{}}块都不知道该引用什么。一旦添加,所有测试都没有问题。

希望将来帮助其他人。