php - 如何测试自定义 DQL 功能?
解决方案
我知道这是一个老问题,但对于像我一样关注它的人来说。
测试其实很简单。一般的想法是使用您的自定义功能生成查询,然后将其与预期结果进行比较。这是示例。
假设您有一个自定义 DQL 函数,它将 MY_FUNC(field) 转换为 MySQL_INTERNAL_FUNC(field)。然后你测试它如下。
/* Somewhere in the PHPUnit test */
/* Assuming $em represents your EntityManager instance */
$query = $em->createQuery('
SELECT MY_FUNC(entity.someField)
FROM MyBundle:MyEntity entity
');
self::assertEquals('
SELECT MySQL_INTERNAL_FUNC(v0_.some_field) AS sclr_0
FROM my_entity v0_
', $query->getSQL());
这就是诀窍。注意缩进。他们在那里只是为了使代码清晰。在实践中,Doctrine 将删除他们制作 SQL。所以预期的 SQL 代码应该在一行中。
推荐阅读
- google-drive-api - Google Drive API v3:如何在文件上设置 canCopy 功能
- python - cowplot::plot_grid 中的错误:未使用的参数(plot.c、plot.def、labels =“AUTO”)和arrangeGrob(...)中的错误:nrow * ncol >= n 不是 TRUE
- r - 错误(函数(优化器 = “bobyqa”,restart_edge = TRUE,boundary.tol = 1e-05)
- video - 视频渐变?
- antd - 如何使用侧边栏从可折叠状态的菜单项中删除默认工具提示?
- node.js - 什么算作 Firestore 中的读取操作?
- llvm - 如何获取 lli 执行跟踪
- debugging - 如何在方案中为 gimp 调试 script-fu 脚本?
- wpf - 如何从 WPF Prism 中的另一个视图单击按钮时更新视图中的文本?
- python - 如何更改数组的维度