[英]Test mockery with a pipeline
我怎么能斷言這一點:
$this->assertEquals('incoming', $payload['routerAction']);
跳過管道。 我正在使用 phpleague/pipeline
代碼:
class IncomingPipeline
{
public function __invoke(array $payload)
{
$router = $payload['router'];
$payload['routerAction'] = 'incoming';
return (new Pipeline())
->pipe(new DispatchIncomingEventStage())
->pipe(BaseRouter::route($router))
->process($payload);
}
}
我基本上想跳過管道或設置 andReturn($payload) 對它們。
您可以使管道成為對IncomingPipeline
的依賴並將其傳遞給構造函數。 這樣,您就可以在測試中沒有任何階段地注入管道。
如果您想保持原樣,可以使用overload
前綴 ( docs ):
final class IncomingPipelineTest extends TestCase
{
public function test()
{
$pipeline = Mockery::mock('overload:' . Pipeline::class);
$pipeline->allows('pipe')->andReturnSelf();
$pipeline->allows('process')->andReturnArg(0);
$payload = (new IncomingPipeline())(...);
self::assertEquals('incoming', $payload['routerAction']);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.