我正在为Web应用程序编写PHPUnit测试用例。由于测试在命令行环境中运行,我嘲笑了一些预定义的变量,如$ _POST,$ _GET,$ _SERVER等。我的测试必须确保我的控制器类解析正确的JSON输入(通过原始POST发送,并通过php://输入发送)。问题是,如何在不运行Web服务器的情况下操纵php://输入的值?嘲笑原始POST数据
1
A
回答
0
我会说你没有足够的关注;我看到它的样子,你应该有:
- 一个方法,从PHP获取原始数据://输入并传送数据到另一个方法
- 接收一个字符串,并解析它作为第二个方法JSON
这两种方法的每一种都是唯一的一件事;这样,你可以单元-测试。
就你而言,你可以单元测试第二种方法(实际完成工作的方法)的行为 - 而不依赖于输入来自哪里。
0
如何将阅读功能移动到一个类(甚至如果你使用PHP 5.3),然后在测试时用模拟实例替换它?
2
POST数据,无论是输送到PHP的标准输入,受CONTENT_LENGTH环境变量告诉PHP如何读取的字节数(所以改后的数据,你只需管在不同的东西)
GET数据是什么位于QUERY_STRING环境变量中。
其他环境变量可以设置由PHP用于填充之类的东西$ _ SERVER
有用见 this相关问题
- 1. 嘲笑数据库连接
- 2. 嘲笑Go数据库SDK
- 3. Moq嘲笑数据集
- 4. javascript嘲笑原型函数错误
- 5. JMockit嘲笑那初始化
- 6. 嘲笑还是不嘲笑?
- 7. Java HTTP Post原始数据
- 8. 嘲笑YUI函数
- 9. Python嘲笑参数
- 10. Rails这样嘲笑HTTP POST请求
- 11. 为什么GoogleMock嘲笑的原始方法仍然被调用?
- 12. 用犀牛嘲笑嘲笑系列
- 13. 嘲笑HttpPostedFileBase与犀牛嘲笑
- 14. 嘲笑我的sqlite数据库
- 15. 嘲笑企业库5'数据库'
- 16. Symfony2 PHPUnit嘲笑数据库问题
- 17. 嘲笑jdbc的难点数据源
- 18. 在AngularJS中嘲笑$ http数据
- 19. 嘲笑与测试数据库?
- 20. Moq嘲笑身份2.0数据库
- 21. 犀牛嘲笑访问数据库
- 22. 如何嘲笑数据的HttpContext NUnit的
- 23. 嘲笑对象返回实际数据
- 24. 使用犀牛嘲笑嘲笑OUT参数,这是我测试
- 25. 使用嘲笑对象在初始化
- 26. 用笑话表示嘲笑?
- 27. 嘲讽TransactionTemplate的嘲笑
- 28. 犀牛嘲笑:嘲讽HttpRequestBase.Files
- 29. 嘲讽命令嘲笑
- 30. 嘲笑Couchbase