gpt4 book ai didi

ruby-on-rails - 测试 View /DOM 内容 RSpec ruby​​ capybara

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:02 27 4
gpt4 key购买 nike

我想知道如何在 View RSpec 测试中测试 DOM 内容,以了解内容是否存在我通常使用 match 或 have_content(匹配 HTML id/类),但在这里我想知道 div是否可见(样式显示:无),我不知道该怎么做。

使用 RSpec 检查 DOM 的更好方法是什么?

我还谈到了另一位开发人员,他告诉我最好在功能测试中检查 DOM 和这类东西,因为 View 不够好,无法做到这一点,我想对此有另一种看法.

最佳答案

我用 Rspec/Capybara 测试了 DOM 元素。我有 PageObject 类并包含 Capybara::DSL 示例
spec/support/page_object.rb 中:

class PageObject
include Capybara::DSL

def visit_page(page)
visit(page)
self
end

def have_field?(attributes)
find_field(attributes).visible?
end

def have_link?(link)
find(:xpath, "//a[@href='#{link}']").visible?
end

def save_and_open_page
super
end

def login(model)
fill_in 'email', with: model.email
fill_in 'password', with: model.password
click_on 'Submit'
end

def right_path?(path, page)
visit_page(page) && current_path == path
end
end

spec/views/event_spec.rb:

require 'spec_helper'

feature 'test authozire page' do
let(:login_page) { PageObject.new }
let(:user) { FactoryGirl.create(:user) }

scenario 'login page have field' do
page = login_page.visit_page('/home/login')
expect(page.have_field?('email')).to be_true
expect(page.have_field?('password')).to be_true
expect(page.have_link?('/users/auth/facebook')).to be_true
expect(page.have_link?('/users/auth/vkontakte')).to be_true
end

scenario "user can login" do
login_page.visit_page('/home/login').login(user)
page = login_page.visit_page('/home/login')
expect(page.have_link?('/search/events')).to be_true
expect { page.have_link?('/search/users') }.to raise_error(Capybara::ElementNotFound)
expect(login_page.visit_page('/user_profile')).to be_true
expect(login_page.right_path?('/user_profile', '/user_profile')).to be_true
expect(login_page.visit_page('/user_profile/edit')).to be_true
expect(login_page.right_path?('/user_profile/edit', '/user_profile/edit')).to be_true
end
end

关于ruby-on-rails - 测试 View /DOM 内容 RSpec ruby​​ capybara,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com