我正在爲幾個返回HTTP響應代碼的方法編寫單元測試。我無法找到斷言HTTP響應代碼的方法。也許我錯過了一些明顯的東西,或者我誤解了PHPUnit的一些東西。驗證PHPUnit中的HTTP響應代碼
我正在使用PHPUnit 4.5 stable。類消息的
相關部分:
public function validate() {
// Decode JSON to array.
if (!$json = json_decode($this->read(), TRUE)) {
return http_response_code(415);
}
return $json;
}
// Abstracted file_get_contents a bit to facilitate unit testing.
public $_file_input = 'php://input';
public function read() {
return file_get_contents($this->_file_input);
}
單元測試:
// Load invalid JSON file and verify that validate() fails.
public function testValidateWhenInvalid() {
$stub1 = $this->getMockForAbstractClass('Message');
$path = __DIR__ . '/testDataMalformed.json';
$stub1->_file_input = $path;
$result = $stub1->validate();
// At this point, we have decoded the JSON file inside validate() and have expected it to fail.
// Validate that the return value from HTTP 415.
$this->assertEquals('415', $result);
}
PHPUnit的回報:
1) MessageTest::testValidateWhenInvalid
Failed asserting that 'true' matches expected '415'.
我不確定爲什麼$結果返回 '真'。 。 。特別是作爲一個字符串值。也不確定我的'預期'論據應該是什麼。
如果這個方法返回的代碼,那麼就不會'的assertEquals()'做的工作? – Crackertastic 2015-02-23 19:20:01
你能提供課堂和測試嗎? – 2015-02-23 19:20:25
@Crackertastic我不確定在assertEquals()中使用什麼作爲期望的參數,因爲我從http_response_code()返回的返回值是'true'作爲字符串: - | – sheldonkreger 2015-02-23 19:36:19