【发布时间】:2020-11-13 06:23:30
【问题描述】:
我有以下代码:
/** @test */
public function it_updates_customer_status_to_deactivated_for_admin_users()
{
$this->hubAdminUser = factory(User::class)->state('admin')->create();
$this->customer = Customer::first();
$this->customer->status_id = 2; //active
$this->customer->save();
// this will update status_id to 3
$this->actingAs($this->hubAdminUser)
->patch(route('hub.customer.updateStatus', $this->customer))
->assertRedirect();
$this->assertDatabaseHas('tenants', [
'id' => $this->customer->id,
'status_id' => 3, //deactivated
]);
}
->patch(route('hub.customer.updateStatus', $this->customer)) 行会将status_id 的值从 2 更改为 3,这肯定是因为我什至在->assertRedirect(); 行之后尝试了$this->customer->refresh()->status_id,这给了我 3。正如它所说,这失败了客户的status_id 在数据库中设置为2。有什么想法可以解决这个问题吗?
【问题讨论】:
-
Customer模型的表名是tenants? -
是的,没错。它是这个包的一部分:tenancyforlaravel.com/docs/v2/getting-started
-
您如何确定这将有效
"// this will update status_id to 3"?我会在上面添加assertStatus(200),或者如果你要返回一些东西,我会断言.. -
没有足够的信息来真正帮助您,唯一想到的是,如果您为租户使用多个数据库,
assertDatabaseHas()可能使用了错误的数据库连接。跨度> -
assertDatabaseHas() 很有可能正在工作,并且测试成功地告诉您代码没有按照您的预期工作。 hub.customer.updateStatus 的控制器中发生了什么?
标签: database laravel unit-testing testing phpunit