Ruby on rails 基于rspec和factory的测试模型方法
我在模型中有一个getter/setter方法,用于检索数组的最后一个元素,并将其添加到数组中(Postgresql字符串数组): 提前谢谢 更新:谢谢,我通过测试的修改方法如下:Ruby on rails 基于rspec和factory的测试模型方法,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我在模型中有一个getter/setter方法,用于检索数组的最后一个元素,并将其添加到数组中(Postgresql字符串数组): 提前谢谢 更新:谢谢,我通过测试的修改方法如下: # return the last address from the array def current_address addresses && addresses.last end # add the current address to the array of addresses # i
# return the last address from the array
def current_address
addresses && addresses.last
end
# add the current address to the array of addresses
# if the current address is not blank and is not the same as the last address
def current_address=(value)
list = self.addresses
list ||= []
if !value.empty? && value != list.last
list << value
end
write_attribute(:addresses, list)
end
#返回数组中的最后一个地址
当前地址
地址&&addresses.last
终止
#将当前地址添加到地址数组中
#如果当前地址不为空且与上一个地址不相同
def当前_地址=(值)
列表=自我地址
列表| |=[]
如果value.empty?&&价值!=最后一个
列表看起来地址
仅在本地范围内,因此每次调用当前地址=
时,它都会被清除。请尝试self.addresses
以下是我认为错误的地方
在测试中,您将替换该数组,而不是向数组中添加元素,因为您正在为该数组指定一个新值
student.current_address = "first address"
student.current_address = "second address"
我认为您应该做的是添加一个新元素,就像您在代码中所做的那样。谢谢,关于重构我的setter方法以使其更具可读性,有什么建议吗?测试通过了,但是在最初使用self.addresses重写方法之后,整个测试通过了,但是在提交学生表单时它没有更新数据库-是否有更好的方法来测试setter是否在写入时实际更新了数据库(只是感兴趣的是,上面的方法写入正确)。再次感谢您在对象上调用重新加载,您将能够确认地址是否正确保留。谢谢。这样做会起作用,但不会测试我的setter方法。
# return the last address from the array
def current_address
addresses && addresses.last
end
# add the current address to the array of addresses
# if the current address is not blank and is not the same as the last address
def current_address=(value)
list = self.addresses
list ||= []
if !value.empty? && value != list.last
list << value
end
write_attribute(:addresses, list)
end
student.current_address = "first address"
student.current_address = "second address"