我有文件夹内幕test/fixtures/schemas
,我在其中定义了一些用于验证某些控制器的 JSON 响应的模式,如下所示:
test
|
|
controllers
|
|
....
fixtures
|
|
organizations.yml
|
|
schemas
|
|
clients
|
|
show.rb
|
|
organizations
...
下面的文件fixtures/schemas/client/show.rb
如下所示:
module Clients
class Show < Dry::Validation::Contract
json do
required(:id).filled(:string)
required(:state).filled(:string)
...
它工作正常,我可以在我的测试中使用这个模式,Clients::Show
但我们还有一个 rubocop 规则,它强制我们使用紧凑的模块和类样式,如下所示:
class Clients::Show < Dry::Validation::Contract
但是当我这样定义它时,我得到一个NameError
test/fixtures/schemas/client/show.rb:3:in `<top (required)>': uninitialized constant Client (NameError)
我觉得奇怪的是一种结构有效而另一种无效。我通读了 Zeitwerk 手册,但无法解释我的问题,并尝试了不同的方法,例如client.rb
使用空模块定义文件,但它不起作用。