self.element ='this'和self.send("element =",'this')之间的区别

DJ *_*ano 2 ruby page-object-gem

我试图理解为什么这两个东西会返回不同的值.

值是a string,而field是a text_field.

def populate_text(field, value)
  self.send "user_name=", value
end
# => nil

def populate_text(value)
  self.user_name = value
end
# => "value"
Run Code Online (Sandbox Code Playgroud)

为什么selfsend具有不同的返回值?

如果有帮助,该类包括PageObject.

Phr*_*ogz 5

用于调用名称以=结尾的方法的Ruby语法糖总是返回右侧值,而不管方法的返回值如何.

当您用于send调用方法时,情况并非如此.例如:

class Foo
  def bar=(n)
    :ohno
  end
end

f = Foo.new
x = (f.bar = 42)
y = f.send("bar=", 42)
p [x,y]
#=> [42, :ohno]
Run Code Online (Sandbox Code Playgroud)

因此,如果您的user_name=方法的返回值不是方法的参数,您将获得两个不同的值.