Я хочу проверить метод
public function get($key) { if (!($time = $this->driver->get($key))) { if ($key == self::LAST_UPDATE_KEY) { $time = new \DateTime(); $this->driver->set($key, $time); } else { $time = $this->get(self::LAST_UPDATE_KEY); // need test this condition } } return $time; }
Первые данные запроса от драйвера должны возвращать значение null, а второе значение мне необходимо.
Я пишу тест
public function testGetEmpty() { $time = new \DateTime(); $driver_mock = $this ->getMockBuilder('MyDriver') ->getMock(); $driver_mock ->expects($this->once()) ->method('get') ->with('foo') ->will($this->returnValue(null)); $driver_mock ->expects($this->once()) ->method('get') ->with(Keeper::LAST_UPDATE_KEY) ->will($this->returnValue($time)); $obj = new Keeper($driver_mock); $this->assertEquals($time, $obj->get('foo')); }
при выполнении возвратить ошибку
Expectation failed for method name is equal to <string:get> when invoked 1 time(s) Parameter 0 for invocation MyDriver::get('foo') does not match expected value. Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'last-update' +'foo'
Долгое время я не писал модульные тесты, и многие забывали. Помогите мне понять.