Lighthouse自动模型检测不适用于单元测试

时间:2019-09-19 15:52:04

标签: phpunit graphql laravel-lighthouse

我似乎正面临一个普遍的问题,即在单元测试它们时,指令驱动的突变将无法正常工作。使用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测试中按预期工作!

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

有人有什么主意吗?

0 个答案:

没有答案