PHPUnit 测试 - 无法断言实际大小 11935 与预期大小 3 匹配
PHPUnit test - Failed asserting that actual size 11935 matches expected size 3
我是 phpunit 的新手,正在尝试编写一个断言创建了三个注释的测试,但我从数据库中获取了所有注释。
/** @test */
public function it_gets_notes()
{
$address = Address::first();
$notes = factory(AddressNote::class, 3)->create(['address_id'
=> $address->id]);
$found = $this->notesClass->getData(['address_id' => $address-
>id]);
$this->assertCount(3, $found);
}
}
Address 和 AddressNote 模型工作正常。我想我最困惑的是 getData
方法,我知道我需要它来覆盖我的代码。有人看到我遗漏的内容会在标题中产生错误吗?
如果您需要检查 差异 在 运行 您的 create
方法之后,然后在添加它们之前和之后保存 $found
,并且减法将是你的数字:
public function it_gets_notes()
{
$address = Address::first();
$found = $this->notesClass->getData(['address_id' => $address->id]);
$notes = factory(AddressNote::class, 3)->create(['address_id' => $address->id]);
$foundAfter = $this->notesClass->getData(['address_id' => $address->id]);
$difference = count($foundAfter) - count($found);
$this->assertEquals(3, $difference);
}
请注意,您现在需要将 assertEquals()
与 3 和差值一起使用,而不是 assertCount()
,因为您是在比较数字。
我不知道你的全部故事,但我认为你的第一个错误是你没有创建测试数据库。
因此,这将是第一步 - 除了您的数据库名称(无论名称是什么)之外,还创建一个 databaseName_test.
还有一些其他的步骤要做——在你的 .env 文件中,将 databaseName 的名称更改为 databaseName_testing——但只有在你进行测试时(然后立即回滚到你原来的 databaseName)。
然而,问题仍然存在(PHP Unit 不是一个完美的工具,就像 PHP 一样),这里是可以提供帮助的技巧。
而不是:
$this->assertEquals(3, $difference);
写入:
$this->assertEquals(11935, $difference); //the number is specific for your case
是的,这很愚蠢,但它应该有用...
我是 phpunit 的新手,正在尝试编写一个断言创建了三个注释的测试,但我从数据库中获取了所有注释。
/** @test */
public function it_gets_notes()
{
$address = Address::first();
$notes = factory(AddressNote::class, 3)->create(['address_id'
=> $address->id]);
$found = $this->notesClass->getData(['address_id' => $address-
>id]);
$this->assertCount(3, $found);
}
}
Address 和 AddressNote 模型工作正常。我想我最困惑的是 getData
方法,我知道我需要它来覆盖我的代码。有人看到我遗漏的内容会在标题中产生错误吗?
如果您需要检查 差异 在 运行 您的 create
方法之后,然后在添加它们之前和之后保存 $found
,并且减法将是你的数字:
public function it_gets_notes()
{
$address = Address::first();
$found = $this->notesClass->getData(['address_id' => $address->id]);
$notes = factory(AddressNote::class, 3)->create(['address_id' => $address->id]);
$foundAfter = $this->notesClass->getData(['address_id' => $address->id]);
$difference = count($foundAfter) - count($found);
$this->assertEquals(3, $difference);
}
请注意,您现在需要将 assertEquals()
与 3 和差值一起使用,而不是 assertCount()
,因为您是在比较数字。
我不知道你的全部故事,但我认为你的第一个错误是你没有创建测试数据库。
因此,这将是第一步 - 除了您的数据库名称(无论名称是什么)之外,还创建一个 databaseName_test.
还有一些其他的步骤要做——在你的 .env 文件中,将 databaseName 的名称更改为 databaseName_testing——但只有在你进行测试时(然后立即回滚到你原来的 databaseName)。
然而,问题仍然存在(PHP Unit 不是一个完美的工具,就像 PHP 一样),这里是可以提供帮助的技巧。
而不是:
$this->assertEquals(3, $difference);
写入:
$this->assertEquals(11935, $difference); //the number is specific for your case
是的,这很愚蠢,但它应该有用...