使用 security.encoder_factory 加速测试中的 symfony2 fixtures 加载

Speedup symfony2 fixtures loading in tests with security.encoder_factory

我在固定装置中创建了很多用户(使用 FOSUserBundle 用户管理器)并在设置时加载它们以进行测试。 updatePassword() 方法需要大量时间来执行,因为它为每个用户计算散列(非常昂贵的操作)。我怎样才能加快速度?

我在自己的项目中所做的是将测试环境的密码编码器更改为比 bcrypt 计算速度更快的编码器。

测试套件实际上不需要存储密码,具有 bcrypt 提供的安全性(测试数据库仅存在于开发人员机器或 travis 上,并且它经常使用弱密码,并且在测试中以明文形式编写)。
如果您创建大量用户,使用更简单的编码器可以使测试 运行 更快。

不过,仅在 config_test.yml 文件中进行此类配置更改非常重要。真实环境必须使用安全的密码编码器。