Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rspec、Capybara和Selenium使用Javascript和SVG测试前端-最佳方法?_Javascript_Ruby On Rails_Selenium_Svg_Capybara - Fatal编程技术网

使用Rspec、Capybara和Selenium使用Javascript和SVG测试前端-最佳方法?

使用Rspec、Capybara和Selenium使用Javascript和SVG测试前端-最佳方法?,javascript,ruby-on-rails,selenium,svg,capybara,Javascript,Ruby On Rails,Selenium,Svg,Capybara,我正在使用RubyonRails开发一个应用程序,并且正在使用RSpec、Capybara和Selenium进行一些测试 我对测试(单元和集成)相当陌生,想知道测试用javascript构建的前端的最佳方法是什么。Javascript用于允许用户在图表中放置和操作SVG元素(如位置、尺寸、颜色等)。这些元素连同它们的属性一起保存到数据库中,这样当用户重新加载图表时,一切都保持原样 到目前为止,对于测试与标准用户功能的交互(例如注册、登录、查看图表列表等),我的测试包括在每次测试之前和之后分别创建

我正在使用RubyonRails开发一个应用程序,并且正在使用RSpec、Capybara和Selenium进行一些测试

我对测试(单元和集成)相当陌生,想知道测试用javascript构建的前端的最佳方法是什么。Javascript用于允许用户在图表中放置和操作SVG元素(如位置、尺寸、颜色等)。这些元素连同它们的属性一起保存到数据库中,这样当用户重新加载图表时,一切都保持原样

到目前为止,对于测试与标准用户功能的交互(例如注册、登录、查看图表列表等),我的测试包括在每次测试之前和之后分别创建用户和销毁用户,例如:

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