在测试一些 http 请求的时候,可能需要用户先登录 .. 这里我们需要用到两个 Trait .. 在这个 test suite 里面,先用一下 Auth/Client trait ... 再添加一个 Session/Client 这个 trait ..
然后去创建一个测试 ... user should able to add post ... 把 client 解构出来 ..
测试里面先添加一个 user .. await .. 用一下 User 模型上的 find ... 给它一个用户的 id 号 .. 在文件顶部,把需要用的 User 导入出来 ..
接着再编辑这个测试 .. 添加一个 response .. await .. 用一下 client .. post .. 发出一个 post 类型的请求 .. 地址是 Route.url .. posts.store ..
然后用一个 send 方法,带着请求里的数据 .. 在上面定义一个 post .. 一个对象 .. 里面有个 title 属性 ... 还有一个 content 属性 ..
把这个 post 交给 send ..
下面再用一个 accept .. 接受 json 类型的数据 .. 它其实就是在请求里添加了一个 accept 头部,值设置成了 application/json ..
接着再用一个 loginVia .. 把 user 交给它 .. 这样会用这个用户的身份发出请求 .. 最后需要再用一下 end 方法 ..
然后做个断言 .. response.assertJSONSubset .. 把 post 交给它 ..
回到命令行 ... 运行一下测试 .. 测试没有通过 .. 打开 PostController .. 找到 store 方法 .. 测试没通过是因为成功创建了内容以后,我们会把用户重定向到内容页面上 ..
这里可以再修改一下 ..
复制一下 index 里面的这两行代码 .. 如果接受的格式是 json ... 我们可以直接响应回创建的 post ..
回到命令行 ... 再运行一下测试 ... 这回测试就会通过了 ..