你有这个:
$mockDelegate->handle()->willReturn('');
$handler->handle(Argument::that([$mockRequest, 'reveal']))->willReturn('');
在代码中,您希望handle()在没有任何参数的情况下被调用。但它是用模拟请求接口的实例调用的。
zend-expressive-session
:
public function testMiddlewareCreatesLazySessionAndPassesItToDelegateAndPersistsSessionInResponse()
{
$request = $this->prophesize(ServerRequestInterface::class);
$request
->withAttribute(SessionMiddleware::SESSION_ATTRIBUTE, Argument::type(LazySession::class))
->will([$request, 'reveal']);
$response = $this->prophesize(ResponseInterface::class);
$handler = $this->prophesize(RequestHandlerInterface::class);
$handler->handle(Argument::that([$request, 'reveal']))->will([$response, 'reveal']);
$persistence = $this->prophesize(SessionPersistenceInterface::class);
$persistence
->persistSession(
Argument::that(function ($session) use ($persistence, $request) {
$this->assertInstanceOf(LazySession::class, $session);
$this->assertAttributeSame($persistence->reveal(), 'persistence', $session);
$this->assertAttributeSame($request->reveal(), 'request', $session);
return $session;
}),
Argument::that([$response, 'reveal'])
)
->will([$response, 'reveal']);
$middleware = new SessionMiddleware($persistence->reveal());
$this->assertSame($response->reveal(), $middleware->process($request->reveal(), $handler->reveal()));
}