如何在一个命名空间下访问每个Faker方法:
any.sentence
any.name
... other methods from Faker::xxx classes
而不是写作:
Faker::Lorem.sentence
Faker::Name.name
...
我正在使用RSpec和Rails。
答案 0 :(得分:1)
为了做到这一点,您可以定义变量any
,它等于您要调用的命名空间类:
lorem = Faker::Lorem
lorem.sentence
#=> "Dignissimos eos qui doloribus quaerat sequi est corrupti error."
name = Faker::Name
name.name
#=> "Dr. Percival Ernser"
但是,请将此视为黑客而不是您应该在代码中执行的操作。实际上,当有人会读你的代码(或者你在几个月内),看到Faker::Namespace
就会显而易见。另一方面,阅读name.name
将导致混淆,因为你必须寻找它的定义来理解它的作用。命名空间有一个存在的理由,不应该被覆盖以省去一些按键。
希望这能回答你的问题!
Faker
)。实际上,不同的方法具有相同的名称,但在不同的名称空间中。例如,Faker
在name
和Faker::Name
中都有方法Faker::Company
的实现(产生不同的结果)。
因此,统一命名空间是不可能的,因为它会导致失去一些方法。