首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合Faker方法- RSpec

混合Faker方法- RSpec
EN

Stack Overflow用户
提问于 2013-08-02 22:54:20
回答 1查看 568关注 0票数 0

如何在一个名称空间中访问每个Faker方法:

代码语言:javascript
复制
any.sentence
any.name
... other methods from Faker::xxx classes

而不是写:

代码语言:javascript
复制
Faker::Lorem.sentence
Faker::Name.name
...

我正在使用RSpec和Rails。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-03 11:21:11

为此,可以定义变量any,它等于要调用的命名空间类:

代码语言:javascript
复制
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而言)。实际上,不同的方法有相同的名称,但名称空间不同。例如,FakerFaker::NameFaker::Company中都有方法name的实现(这会产生不同的结果)。

因此,统一名称空间是不可能的,因为它会导致一些方法的松动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18027285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档