我已经玩Rails几年了,并且已经制作了一些正在制作的可通过的应用程序.我总是避免做任何测试,但我决定纠正这个问题.我正在尝试为我已经开始运行但正在不断修改的工作编写的应用程序编写一些测试.我担心任何改变都会破坏事情,所以我想让一些测试运行起来.我已经阅读了RSpec的书,观看了一些截屏视频,但我正在努力开始(这让我觉得你做的事情只有在你实际完成之后才明白).
我正在尝试编写应该是我的ReportsController的简单测试.我的应用程序的问题在于,整个事情几乎都位于身份验证层之后.如果你没有登录就没有任何作用所以我必须先模拟一个登录才能发出一个简单的get请求(虽然我想我应该写一些测试来确保没有登录就没有任何作用 - 我会去以后).
我已经建立了一个RSpec,Capybara,FactoryGirl和Guard的测试环境(不知道使用哪种工具,所以使用Railscasts的建议).到目前为止我编写测试的方法是在FactoryGirl中创建一个用户,就像这样;
FactoryGirl.define do
sequence(:email) {|n| "user#{n}@example.com"}
sequence(:login) {|n| "user#{n}"}
factory :user do
email {FactoryGirl.generate :email}
login {FactoryGirl.generate :login}
password "abc"
admin false
first_name "Bob"
last_name "Bobson"
end
end
Run Code Online (Sandbox Code Playgroud)
然后像这样写我的测试;
require 'spec_helper'
describe ReportsController do
describe "GET 'index'" do
it "should be successful" do
user = Factory(:user)
visit login_path
fill_in "login", :with => user.login
fill_in "password", :with => user.password
click_button "Log in"
get 'index'
response.should be_success
end
end
end
Run Code Online (Sandbox Code Playgroud)
这样就失败了;
1) ReportsController GET 'index' should be successful …Run Code Online (Sandbox Code Playgroud)