ruby-on-rails 如何设置水豚、 selenium 等属性值?

ctehm74n  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(169)

我有一个<textarea>字段(Rails模型属性),我必须测试它是否显示允许的最大长度错误消息。我必须使用启用了Capybara,Selenium等的系统规范来实现这一点。

# model
class Model < ActiveRecord::Base
  validates_length_of :description, maximum: 1000
end

# view
<label for="description">Description</label>
<textarea maxlength="1000" id="description">Some text</textarea>

# RSpec
RSpec.describe "Model", type: :system do
  it "should fail" do
    visit edit_model_path(@model)

    fill_in "Description", with: "abcdefghijklmnopqrstuvwxyz"*1000

    # ...
  end
end

我尝试在<textarea>中填充长度超过1000个字符的文本,并且(maxlength="1000"),它只插入文本的前1000个字符到<textarea>中,这使得我无法测试最大长度错误消息输出。
我认为测试的一种方法是在RSpec示例中更改<textarea>maxlength属性,这样我就可以填充超过1000个字符,使我能够有效地测试最大长度错误。
是否可以使用RSpec Capybara、Selenium等更改maxlength属性?

bq9c1y66

bq9c1y661#

基于@max注解,这里有一个(有争议的)方法可以通过使用Selenium在RSpec中更改<textarea>maxlength属性:

# RSpec
RSpec.describe "Model", type: :system do
  it "should fail" do
    # ...

    page.execute_script("document.getElementById('description').removeAttribute('maxlength')");

    # ...
  end
end

相关问题