我正在使用Ruby on Rails开发一个应用程序,并正在使用RSpec,Capybara和Selenium进行一些测试。
我对测试(单元和集成)相当新,并且想知道测试使用javascript构建的前端的最佳方法是什么。 Javascript用于允许用户在图表中放置和操纵SVG元素(例如位置,尺寸,颜色等)。这些元素使用它们的属性保存到数据库中,这样当用户重新加载图表时,一切都按原样。
到目前为止,为了测试与标准用户功能的交互(例如注册,登录,查看图表列表等),我的测试包括创建用户并分别在每次测试之前和之后销毁用户,例如: / p>
require 'spec_helper'
require_relative 'integration_test_helper'
describe "Diagrams" do
include IntegrationTestHelper
before :all do
@test_user = Factory.create(:user)
end
after :all do
@test_user.destroy
end
context "authenticated user" do
before :each do
visit new_user_session_path
login(@test_user)
end
it "should be taken to the diagrams index page" do
visit diagrams_path
#page.should have_content "Your Diagrams"
page.should have_content diagrams.index.title
end
it "should list the user's diagrams" do
diagram = Factory.create(:diagram, :user => @test_user)
visit diagrams_path
page.should have_content(diagram.title)
diagram.destroy
end
...这是我写的一个测试,用于检测创建并单击指向新图表的链接,在屏幕上显示相应的容器div和初始SVG标记(使用Selenium):
it "should create a diagram and go to the new diagram when clicked", :js => true do
visit diagrams_path
find("#btn_create_new_diagram").click
within("form#new_diagram") do
fill_in "diagram_title", :with => "Test diagram"
end
click_button diagrams.new.create
click_on "Test diagram"
page.should have_content "Test diagram"
find("#container")
find("*[name()='svg']")
end
end
end
为了测试图表编辑器,我会更好地做一些事情,比如在数据库中创建图表元素并检查它们是否在屏幕上正确显示,或者我可以测试实际的用户交互,例如实际放置和操作图表元素(I想象这可能很困难,可能很脆,因为它可能依赖鼠标坐标等)?另外,我是否想分别在每次测试之前和之后创建和销毁图表?我更愿意测试构建一个相当大的图表,但我担心这会导致一些冗长而混乱的测试。