Я пытаюсь проверить свою бизнес-логику, которая взаимодействует с ORB RedBeanPHP, я не хочу тестировать сам RedBeanPHP, но поведение моего кода, когда оно связано с Красная фасоль .Каков правильный путь к бизнес-логике Unit Test с помощью RedBeanPHP ORM
Я думал об издевательстве метода, который я хочу проверить, а затем возвращаю значение, которое мне нужно, таким образом я изолирую соединение с базой данных, потому что он мне не нужен, и я просто проверяю поведение этого метода ... проблема заключается в том, что все методы RedBe являются общедоступными, и я прочитал, что я не могу имитировать такие методы.
Примечание: вызов этого метода Facade :: count ('table_name') должен возвращать число строк в этой таблице, которое является Int.
Я попробовал этот тест, и он не возвращает Int, как я ожидал, что он вернется:
/**
* @param string $tableName
* @param int $returnValue
*
* @return \PHPUnit_Framework_MockObject_Builder_InvocationMocker
*/
protected function mockCount($tableName, $returnValue)
{
$this->beanCount = $this->getMockBuilder(Facade::class)->setMethods(['count'])->getMock();
return $this->beanCount
->expects($this->once())
->method('count')
->with($this->equalTo($tableName))
->willReturn($returnValue);
}
public function testCountSuccess()
{
$tableCount = $this->mockCount('questions', 7);
$this->assertInternalType('int', $tableCount);
}
Есть ли в любом случае статические методы Mock RedBean в? и если есть другой способ или техника, которые могут работать в этом случае? пожалуйста, порекомендуйте .
спасибо.
Благодаря @Matteo, он работал как шарм :) –