1

我正在学习 Rails 4,并尝试使用 Rspec 和 capybara 编写一些测试。我正在为我的用户编写功能测试,并且正在尝试测试用户登录。

feature "User" do
        scenario "A user signs in" do
            let(:user) { FactoryGirl.create(:user) }
            visit signin_path

            fill_in "Username", with: user.username
            fill_in "Password", with: "123456"
            click_button "Log in"

            expect(page).to have_content(user.username)
        end
end

它告诉我 let 是一个未定义的方法。而且我确定问题在于它在功能/场景测试中。如何在这种测试中定义用户?

此外,在这样的描述/它请求测试中

describe "Something" do
    it "should do something" do
        expect(page).to have_content{"...")
    end
end

我可以这样缩短

describe "Something" do
    subject { page }
    it { should have_content("...") }
end

有没有办法缩短expect(page).....场景中的时间?谢谢。

4

1 回答 1

0

let用于在多个测试中根据需要对“变量”进行延迟初始化;在测试中初始化它是荒谬的。要么将 let 移到scenario块之外,要么只使用标准变量赋值,比如user = FactoryGirl.create(:user).

于 2013-08-18T20:01:06.793 回答