我似乎面临一个普遍的问题,即指令驱动的突变在单元测试时无法正常工作。使用 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 测试中按预期工作!
现在我怀疑在测试中没有找到用户模型或不合适,但我不明白为什么会这样。
有人有什么主意吗?