我对嘲弄和phpunit测试很陌生。
我创建了一个测试来检查是否有东西被写入了数据库。我使用了doctrine,我创建了一个我的doctrine_connection和doctrine_manager的模拟对象。
一切都运行得很好,但是我想得到给定的参数,用assertEqual检查它。
现在我正在做以下事情:
require_once "AbstractEFlyerPhpUnitTestCase.php";
class test2 extends AbstractEFlyerPhpUnitTestCase {
public function getCodeUnderTest() {
return "../php/ajax/presentations/add_presentation.php";
}
public function testingPresentationObject()
{
// prepare
$_REQUEST["caption"] = "Testpräsentation";
$_SESSION["currentUserId"] = 1337;
$this->mockedUnitOfWork->shouldReceive('saveGraph')->with(\Mockery::type('EFPresentation'));
$this->mockedUnitOfWork->shouldReceive('saveGraph')->with(\Mockery::type('EFSharedPresentation'));
$this->mockedDoctrineConnection->shouldReceive('commit');
//run
$this->runCodeUnderTest();
global $newPresentation;
global $newSharedPresentation;
// verify
$this -> assertEquals($newPresentation->caption,$_REQUEST["caption"]);
$this -> assertEquals($newSharedPresentation->userId,$_SESSION["currentUserId"]);
}
}
saveGraph正在获取EFPresentation对象。我需要的是该对象。
我想Assert等于EFPresentation-〉caption,但是从给参数的给定对象,现在我使用的是在add_presentation中创建的EFPresentation-〉caption。
1条答案
按热度按时间vlju58qv1#
你可以使用\Mockery::on(闭包)来检查参数。这个方法接收一个函数,这个函数将通过传递实际的参数被调用。在里面你可以检查你需要的任何东西,如果检查成功,你必须返回true。
一个警告是,当测试没有通过时,除非你放一些回显或者使用调试器,否则你不会得到任何关于原因的详细信息。
编辑:已编辑缺失的括号