1、单纯用selenium
open '/admin/users' assert_text "All Users" click "link=New User" wait_for_text_present "Login Fields" type "user[login]", "cvu" submit
只有客户端测试
2、比较难看的结合
context "Test create user" do setup do @sel = Selenium::SeleneseInterpreter.new("localhost", 4444, "*firefox", "http://localhost:3000", 5000) @sel.start end specify "should create a user when given valid user information" do @sel.open_and_wait "http://localhost:3000/admin/users" @sel.assert_text "All Users" @sel.click_and_wait "link=New User" @sel.type "user[login]", "cvu" @sel.submit end teardown do @sel.stop end end
其实还是只有客户端测试。
3、我希望代码可以这样简单和直观:
context "Test create user" do specify "should create a user when given valid user information" do open '/admin/users' page.should have_text("All Users") click 'link=New User' fill {:users=>{:login=>'cvu', :firstname=>'Forrest', :lastname=>'Cao'}} submit response.should redirect_to('/admin/users') page.should have_text("cvu") User.find_by_login("cvu").should_not be_nil end end
既可以通过selenium做浏览器里的测试(open '/admin/users'),又可以通过rspec看server端的反应(response.should redirect_to...),还可以访问测试数据库看里面的数据(User.find(1).should_not be_nil)。
不知道这样的东西目前有没有,很期待。