【发布时间】:2017-08-13 19:13:40
【问题描述】:
我正在学习 Laravel 5.4,对 Laravel 和 PHPUnit 还是很陌生。遵循在线基础教程后,一切正常。
这个测试函数在运行 phpunit 时工作正常
public function testBasicExample()
{
$response = $this->call( 'GET' , '/welcome');
$this->assertTrue(strpos($response->getContent(), 'Laravel') !== false);
}
当我尝试测试 Api 时出现问题
我采取的步骤
为书籍创建 Api 路由
从 localhost/api/books/ 以 json 形式返回 users talbe 中的所有用户
public function index() { $users = DB::table('users')->get()->toJson(); echo $users; }
我在浏览器中打开链接,json正确返回
将json复制粘贴到在线json验证器jsonlint中即可。
创建新的测试函数
public function test_index_method_returns_all_books() { $response = $this->call( 'GET' , '/api/books/'); $this->assertEquals(200, $response->getStatusCode()); $data = json_decode($response->getContent(),true); $this->assertJson($data); }
运行 phpunit 200 状态测试通过但 assertJson 没有通过。
我尝试为 $response->getContent() 执行 var_dump,发现它返回空。
现在我无法获取 api/book/ 的 getContent()。有谁知道这个有没有解决办法?
谢谢。
【问题讨论】:
-
我遇到了类似的问题,即 curl 调用在内容中返回正确的 JSON 响应,但 API 调用在公共 $original 中显示类对象信息,但公共 $content 是“{}”。你找到解决办法了吗?