机械师 + RSpec 和保留字

发布于 2024-11-30 19:43:48 字数 239 浏览 2 评论 0原文

我有一个蓝图:

Model.blueprint(:something) do
  name "Some name"
  context "some context"
end

“context”是Model的一个属性,但它也是RSpec的保留字。当我尝试 make 和 object 时,我在“context”行上收到 ArgumentError 。

有什么想法如何克服这种情况?

I have a blueprint:

Model.blueprint(:something) do
  name "Some name"
  context "some context"
end

"context" is an attribute of Model, but it is also a reserved word of RSpec. When I try to make and object I get ArgumentError on "context" line.

Any ideas how to overcome this situation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

探春 2024-12-07 19:43:48

无法使用 Machinist 2.0.0.beta2 复制此内容。

Machinist 的工作方式是重写 method_missing?,然后根据这些参数分配属性。如果 rspec 以某种方式将 context 方法分配给 Machinist's Lathe 的对象,那么该方法将在 method_missing? 之前调用。如果您仍然遇到此问题,您可以在评估属性之前尝试使用 remove_method :context

Model.blueprint(:something) do
  remove_method :context
  name "Some name"
  context "some context"
  alias_method :context, :describe
end

我无法判断这是否有效,因为我无法在本地复制它,但我会给出这是一个镜头。

Unable to replicate this with Machinist 2.0.0.beta2.

Machinist works by overriding method_missing? and then assigning attributes based on those arguments. If rspec is somehow assigning a context method to Machinist's Lathe's objects, then that method will be called before method_missing?. If you're still experiencing this problem, you could try using remove_method :context before evaluating attributes:

Model.blueprint(:something) do
  remove_method :context
  name "Some name"
  context "some context"
  alias_method :context, :describe
end

I can't tell if that would work, as I can't replicate it locally, but I would give it a shot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文