**上下文:**我使用Symfony和API Platform创建了一个应用程序,并且正在编写API测试
我有一个名为“cost”的属性,它是实体中的一个浮点数:
#[ApiResource()]
class MyEntity {
...
#[ORM\Column(nullable: true)]
private ?float $cost = null;
..
}
此属性在我的Postgres DB(由Doctrine管理)中存储为“双精度”。
此实体作为API平台生成的API端点。我编写了测试来检查值是否正确:
public function testGetSingleMyEntity(): void
{
...
$client->request('GET', '/api/my_entity/'.$myentity->getId());
$this->assertJsonContains([
"cost" => $myentity->getCost()
]);
...
}
但是当我运行测试时,我遇到了这个错误:
3) App\Tests\Api\MyEntityTest::testGetSingleMyEntity
Failed asserting that an array has the subset Array &0 (
'cost' => 25.0
--- Expected
+++ Actual
@@ @@
- 'cost' => 25.0,
+ 'cost' => 25,
我试着用(float)或floatval来转换cost的值,但我没有做任何改变,因为它已经是一个浮点数了。
我不明白这是API平台的类型格式错误还是因为我犯了一个错误?
如果有人能告诉我这是怎么回事我会很感激的。
谢谢
1条答案
按热度按时间rdrgkggo1#
为了解决这个问题,我不得不将物业成本的类型改为“decimal”。它现在作为
numeric(10,2)
存储到DB中,并在PHP中作为字符串处理: