我正在爲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. 嘲笑Go數據庫SDK
- 2. Moq嘲笑數據集
- 3. 嘲笑數據庫連接
- 4. Java HTTP Post原始數據
- 5. Python嘲笑參數
- 6. 爲什麼GoogleMock嘲笑的原始方法仍然被調用?
- 7. 嘲笑HttpPostedFileBase與犀牛嘲笑
- 8. 用犀牛嘲笑嘲笑系列
- 9. 犀牛嘲笑訪問數據庫
- 10. 嘲笑企業庫5'數據庫'
- 11. 在AngularJS中嘲笑$ http數據
- 12. 嘲笑與測試數據庫?
- 13. 如何嘲笑數據的HttpContext NUnit的
- 14. 使用嘲笑對象在初始化
- 15. 使用犀牛嘲笑嘲笑OUT參數,這是我測試
- 16. 用笑話表示嘲笑?
- 17. 犀牛嘲笑:嘲諷HttpRequestBase.Files
- 18. 嘲諷命令嘲笑
- 19. 通過原始HTTP傳遞POST數據
- 20. 嘲笑會員
- 21. 嘲笑異常
- 22. 嘲笑HttpListenerContext
- 23. 嘲笑Java類
- 24. 嘲笑SPServer.Local
- 25. 嘲笑FacesContext
- 26. 嘲笑UIImagePNGRepresentation
- 27. 嘲笑HttpServerUtilityBase
- 28. Jmockit:嘲笑@EJB
- 29. 嘲笑Wcf ServiceContract
- 30. 嘲笑DateTime