我在Symfony 3中有一个带有Web应用程序和REST API的应用程序。
我正在使用Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase编写功能测试
$this->client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'test',
'PHP_AUTH_PW' => 'test',
));
public function testIndex()
{
$this->client->request(
'GET',
'/titles'
);
$response = $this->client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
我有API的OAuth身份验证和webapp的form_login。 对于我的测试,我使用http_basic,这是我的config_test.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
api:
http_basic: ~
main:
http_basic: ~
providers:
in_memory:
memory:
users:
test: { password: test, roles: [ 'ROLE_USER' ] }
在我的控制器中,我得到像这样的用户:
$this->getUser()->getId()
当我启动phpunit时,我得到了
Error: Call to undefined method Symfony\Component\Security\Core\User\User::getId()
它没有使用我的用户实体进行测试,我该怎么办?
答案 0 :(得分:0)
它没有使用我的用户实体进行测试
这是因为内存提供程序uses the built in UserInterface
implementation。 InMemoryUserProvider将永远不会使用您的实体 - 它基于与教条用户提供商完全不同的系统。
你有几种解决方法。
InMemoryUserProvider
的行为,但使用您的自定义实体类。