Lou*_*ieV 4 php unit-testing mockery
我学习如何使用mockery来运行一些单元测试,我不知道如何模拟我的数据库类.它由可以像这两个示例链接的单独方法组成:
$db->select('someTblName',['fieldName'])
->where('fieldName', 'someValue')
->runQuery()
->fetch(); //returns array or null
Run Code Online (Sandbox Code Playgroud)
另一种用途可能是:
$db->select('someTblName')
->where('fieldName', 'someValue')
->where('fieldName', array('>=' , 'someValue')
->runQuery()
->fetch(); //returns array or null
Run Code Online (Sandbox Code Playgroud)
从阅读一些文档,我看到我可以做的事情:(对于第一种情况)
$db = \Mockery::mock('Database');
$db->shouldReceive('select', 'where', 'runQuery', 'fetcth')
->with(??????)
->andReturn(null);
Run Code Online (Sandbox Code Playgroud)
现在我对如何将"对应"参数传递给方法感兴趣?而且,我将如何模拟第二种情况.
shouldReceive('select->where->runQuery->fetch')如果你不关心这些论点,你可以这样做.如果您确实想要检查参数,则必须执行以下操作以链接期望:
$db->shouldReceive('select')->with('someTblName', ['fieldName'])
->once()->andReturn(m::self())->getMock()
->shouldReceive('where')...
Run Code Online (Sandbox Code Playgroud)
最后的应该是接受的shouldReceive('fetch')->andReturn(null).