У меня есть тестовый пример PHPUnit, в котором я озадачен следующим фрагментом. Я хочу проверить, что метод actionUpload вызывает функцию exposeAndSaveDataLines правильно, т. Е. Что первый аргумент представляет собой массив, как я ожидаю. public function test_actionUpload() { $sut = $this->getMockBuilder('MasterdataController') ->setMethods(array('exposeAndSaveDataLines', 'render')) ->disableOriginalConstructor() ->getMock(); $expectedLines = require_once ($this->dataDir . 'expectedLines.php'); $sut->expects($this->once()) ->method('exposeAndSaveDataLines') ->with($this->equalTo($expectedLines), $this->anything(), $this->anything(), […]
Итак, функция: function testMe ($a, $b) { $obj = new CalculationObject(); return $obj->calcIt ($a, $b); } как насмехаться над этим творением?
Я работаю над некоторым кодом, который читается из сокета, и он ошибается, когда он получает определенный большой вход. Я пошел, чтобы добавить единичный тест для этого, прежде чем исправлять его, но застрял, потому что я не могу имитировать fread (и другие встроенные функции PHP, которые я использую, например, fsockopen , feof и т. Д.). Простыми […]
Я пишу обертку PHP вокруг стороннего API. Более того, для практики, но я также не вижу хорошего в любой момент, так что, возможно, он будет использоваться другими в будущем. Мои модульные тесты были довольно простыми, за исключением случаев, когда я попал в лимит. Разработчик API получил ограничение максимальных запросов (1 в секунду, 20 в минуту), […]
Как я могу сбросить ожидания () для PHPUnit Mock? У меня есть макет SoapClient, который я бы назвал несколько раз в рамках теста, сбросив ожидания каждого прогона. $soapClientMock = $this->getMock('SoapClient', array('__soapCall'), array($this->config['wsdl'])); $this->Soap->client = $soapClientMock; // call via query $this->Soap->client->expects($this->once()) ->method('__soapCall') ->with('someString', null, null) ->will($this->returnValue(true)); $result = $this->Soap->query('someString'); $this->assertFalse(!$result, 'Raw query returned false'); $source = […]
У меня есть интерфейс, который я хотел бы высмеять. Я знаю, что могу издеваться над реализацией этого интерфейса, но есть ли способ издеваться над интерфейсом? <?php require __DIR__ . '/../vendor/autoload.php'; use My\Http\IClient as IHttpClient; // The interface use My\SomethingElse\Client as SomethingElseClient; class SomethingElseClientTest extends PHPUnit_Framework_TestCase { public function testPost() { $url = 'some_url'; $http_client = […]
У меня простой пример использования. Я хочу иметь метод setUp, который заставит мой mock-объект вернуть значение по умолчанию: $this->myservice ->expects($this->any()) ->method('checkUniqueness') ->will($this->returnValue(true)); Но затем в некоторых тестах я хочу вернуть другое значение: $this->myservice ->expects($this->exactly(1)) ->method('checkUniqueness') ->will($this->returnValue(false)); Я использовал GoogleMock для C ++ в прошлом, и у него было «returnByDefault» или что-то в этом роде. Я […]
Я работаю над тестом в phpunit, и у меня проблема. У меня есть публичная функция в моем классе, которую я пытаюсь проверить. В зависимости от параметров, переданных методу, защищенная функция также в моем тестовом классе будет вызываться один или два раза. В настоящее время у меня есть тест, чтобы проверить правильность возвращаемых данных, но я […]
У меня есть ClassA, который использует ServiceB. В определенном случае ClassA не должен ссылаться на какие-либо методы ServiceB. Теперь я хочу проверить это и проверить, что никакие методы не вызываются. Это можно сделать следующим образом: $classA->expects( $this->never() )->method( 'first_method' ); $classA->expects( $this->never() )->method( 'second_method' ); … Есть ли способ просто указать, что «этот метод не […]
Рассмотрим следующий сценарий (это не производственный код): class MyClass { public function myMethod() { // create a directory $path = sys_get_temp_dir() . '/' . md5(rand()); if(!mkdir($path)) { throw new Exception("mkdir() failed."); } // create a file in that folder $myFile = fopen("$path/myFile.txt", "w"); if(!$myFile) { throw new Exception("Cannot open file handle."); } } } Правильно, […]