我正在学习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).....
?感谢。
答案 0 :(得分:0)
let
用于在多个测试中根据需要对“变量”进行延迟初始化;在测试中初始化它是荒谬的。将let移到scenario
块之外,或者只使用标准变量赋值,例如user = FactoryGirl.create(:user)
。