我正在使用Rspec内的Capybara为rails应用程序编写集成测试。填写表格后,用户按下提交。
如果我参加测试,我会得到:
预计会有内容"欢迎来到课程建设者"在"你是 被重定向。"
我正在尝试测试结果页面内容,这是测试:
describe PagesController do
describe "Quiz testing in chapter" do
def page_view
Capybara::Node::Simple.new(@response.body)
end
render_views
login_student
it "should fail if user chosen wrong answer" do
page= create_quiz_page_with_two_choices_first_correct
post :answer_quiz, :page_id=>page.id, :submitted_single_answer=>'2'
page_view.should have_content("Welcome to course builder")
end
end
end
PagesController
中的
def answer_quiz
...
respond_to do |format|
format.html { redirect_to page }
format.json { head :ok }
end
end
我刚刚开始使用Capybara,所以我错过了一些明显的东西吗?为什么我坚持使用重定向响应?
谢谢!
hopewise
答案 0 :(得分:3)
login_student
需要进入before
区块:
before(:each) do
login_student
end
然而,即使这可能也无法解决问题。使用Capybara时,建议通过访问每个示例的登录页面来实际登录,所以:
before(:each) do
visit login_path # log in test user
end
it "should do something awesome" do
visit "/awesome"
page.should have_content("You rock!")
end
编写一个特殊情况来处理测试环境中的登录也很有帮助,这样就可以避免为测试登录创建用户。