我是Capybara的新手,rspec& Ruby,我有一个填写表单的函数:
def form_fill(name:'James', age:'25', pets:'cat')
fill_in 'Name', with: name
fill_in 'Age' , with: age
fill_in 'Pets', with: pets
end
我想知道该功能要改变什么,所以我可以修改表格(我已经填写),再次使用相同的功能。
例如:
我做了form_fill(name:'Bob')
,现在我的表格是:
Name Age Pets
---- ---- ----
Bob 25 cats
稍后我想更改相同的已保存表单,并且仅通过仅使用age:form_fill(age:45)的参数调用相同的函数来更改年龄。
此时将使用默认值将表单更改为:
Name Age Pets
---- ---- ----
James 45 cats
所以我想知道如何实现与填充物相同的功能。同时修饰语。
答案 0 :(得分:3)
看起来你只需要在这里使用Plain Old Ruby Object类。首先,我将创建一个Person类,用于设置有关人的属性。
class Person
attr_accessor :name, :age, :pets
def initialize(name: "James", age: 45, pets: "cat")
@name = name
@age = age
@pets = pets
end
end
这将允许您执行以下操作:
person = Person.new(name: "Bob")
=> #<Person:0x007fac4bb27128 @age=45, @name="Bob", @pets="cat">
然后在Capybara方法中这样做:
def form_fill(person)
fill_in 'Name', with: person.name
fill_in 'Age' , with: person.age
fill_in 'Pets', with: person.pets
end
如果您想修改此人:
person.age = 25
form_fill(person)
希望这有帮助!