public function testInvokeFlow() { $flow1 = m::mock(FlowInterface::class); $flow2 = m::mock(FlowInterface::class); $runner = Flow::run($flow1, $flow2); $node1 = m::mock(NodeInterface::class); $node2 = m::mock(NodeInterface::class); $node3 = m::mock(NodeInterface::class); $flow1->shouldReceive('flow')->with($node1)->andReturn($node2); $flow2->shouldReceive('flow')->with($node2)->andReturn($node3); static::assertEquals($node3, call_user_func($runner, $node1)); }