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