php - Lumen / Laravel:无法弄清楚对 json 响应进行单元测试的工作原理
问题描述
我无法弄清楚单元测试是如何工作的。
我有返回 JSON 响应的控制器
控制器.php
public function getDiscount(Request $request)
{
if (isset($request) && !empty($request)) {
return response()->json($this->discount->calculateDiscount($request->json()->all()))->getOriginalContent();
}
}
使用邮递员,这是这条路线的结果:
客户发帖:
{
"customer-id": "3",
"items": [
{
"product-id": "A101",
"quantity": "2",
"unit-price": "9.75",
"total": "19.50"
},
{
"product-id": "A102",
"quantity": "1",
"unit-price": "49.50",
"total": "49.50"
}
],
"total": "69.00"
}
API 响应
{
"applied_discounts": [
{
"id": 3,
"name": "Tools Discount",
"description": "Seems like you really like Tools, here's one for free!"
}
],
"discounted_items": [
{
"product-id": "A101",
"quantity": "2",
"unit-price": "9.75",
"total": "19.50",
"discounted_price": 15.6
}
],
"discounted_price": 65.1,
"original_price": "69.00"
}
现在,当我尝试进行单元测试时,这就是我想出的:
public function testToolsDiscount()
{
$this->json('POST', '/discount',
[
'customer-id' => '3',
'items' => [
[
'product-id' => 'A101',
'quantity' => '2',
'unit-price' => '9.75',
'total' => '19.50'
],
[
'product-id' => 'A102',
'quantity' => '1',
'unit-price' => '49.50',
'total' => '49.50'
]
],
'total' => '69.00'
])
->seeJson(
[
'applied_discounts' => [
[
'id' => 3,
]
],
]);
}
但是,当我运行它时,这是我得到的错误
DiscountTest::testToolsDiscount 从路由返回了无效的 JSON。也许抛出了异常?
我究竟做错了什么?
解决方案
确保您的路线与指定的路线匹配,'/discount'
并带有它可能具有的任何前缀。
推荐阅读
- ubuntu - 通过 USB 将 iphone 连接到 sosumi/qemu
- ruby - chef-client 创建一个文件夹而不是文件
- firebase - 如何通过在flutter中从firestore中选择月份来搜索数据?
- python - 如何附加字典?
- outlook - 如何在 Mailto 链接的主题中复制电子邮件的主题?
- apache-kafka - KafkaTopicProvisioner - 无法创建主题
- javascript - 在三元运算符中使用多个条件时,我的 Vue 应用程序无法加载
- api - 如何在 Flutter 的 google_sign_in 中获取 JWT 格式的访问令牌?
- r - AIC 后使用 train() 函数的 qqplot(和其他诊断图)
- ios - 如何使用 Swift 在 iOS 上的 UICollecetionView 中设置两张照片之间的间隔?