如何使用FactoryGirl创建一个名为“别名”的属性?

时间:2012-02-16 10:46:33

标签: ruby factory-bot

我只是想知道是否可以使用FactoryGirl创建一个名为“alias”的属性,因为别名是Ruby中的保留字。

FactoryGirl.define do
  factory :blah do
    name "dummy"
    alias "dummy"
  end
end

我尝试了各种逃避事物的组合,却无法获得任何有用的工作。

2 个答案:

答案 0 :(得分:34)

Ruby不知道你是在尝试调用一个名为alias的方法,还是将一个方法作为另一个方法,而默认为后者。您可以通过

来消除歧义
self.alias "dummy"

即,通过明确指定接收器。这通常是在其他情况下的方式,无论你是在调用方法还是做其他事情都是不明确的。例如

self.foo = 'bar'

调用foo=方法而不是创建一个名为foo的局部变量。

对于small number of field names,这不起作用。 Factory girl的DSL使用method_missing,因此如果DSL对象具有该名称的方法,则会调用它。在这些情况下,您可以执行DSL Sugar normal为您执行的操作并直接致电add_attribute

FactoryGirl.define do
  factory :blah do
    add_attribute :name, "some value"
  end
end

相同
FactoryGirl.define do
  factory :blah do
    name "some value"
  end
end

答案 1 :(得分:1)

int main(int argc, char** argv){ char* somestring = malloc(1024); core_read_file("/some/file/path", &somestring, somestring); printf("In main(): %s\n", somestring); free(somestring); return 0; } 块定义变量并在其上调用方法。

factory .. do