2

我似乎面临一个普遍的问题,即指令驱动的突变在单元测试时无法正常工作。使用 GraphQL Playground 一切都按预期工作,并且自动检测到用户模型。但是,如果对相同的功能进行单元测试,它就会失败。

所有配置值都已正确设置(从常规请求中我可以看出没有失败):

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => ClientName\PackageName\Models\User::class,
        ],
   ...
]

并且灯塔配置值也设置为上面的命名空间!

因此,例如这个突变会触发UserPolicy类,然后自动调用User类的 create 方法:

type Mutation @protect(guards: ["api"]) {
  "Create user"
  createUser(data: NewUserInput! @spread): User
  @can(ability: "create")
  @create 
}

但是通过 phpunit 调用相同的请求会导致错误:因为@can它返回一个未授权的错误,如果我删除@can它只会更新用户模型的电子邮件字段,就好像没有正确设置批量分配一样。

当我现在将上述架构定义更改为:

type Mutation @protect(guards: ["api"]) {
  "Create user"
  createUser(data: NewUserInput! @spread): User
  @can(ability: "create" model: "ClientName\\PackageName\\Models\\User")
  @create(model: "ClientName\\PackageName\\Models\\User") 
}

它在 phpunit 测试中按预期工作!

现在我怀疑在测试中没有找到用户模型或不合适,但我不明白为什么会这样。

有人有什么主意吗?

4

0 回答 0