使用PostgreSQL时单元测试产生不同的结果

时间:2019-06-17 16:37:10

标签: postgresql phpunit silverstripe silverstripe-4

曾经使用过在使用MySQL时运行良好的模块,但是当我尝试运行单元测试时,在PostgreSQL下(使用Travis)进行测试时出现错误。

模块本身在这里:https://github.com/silvercommerce/taxable-currency

一个失败的构建示例在这里:https://travis-ci.org/silvercommerce/taxable-currency/jobs/546838724

我没有使用PostgreSQL的大量经验,但是我不确定为什么会发生这种情况?我唯一可能认为会导致此问题的原因是,我试图在我的装置文件中手动设置ID,而PostgreSQL可能不支持此设置?

如果不是这种情况,是否有人知道可能导致此问题的原因?

编辑:我再次对此进行了研究,错误似乎是由于this assertion引起的,它应该找到税率vat,但是却找到税率reduced

我猜我的逻辑中有一个问题导致返回错误的汇率,尽管我不确定为什么...

1 个答案:

答案 0 :(得分:1)

最后,似乎Postgres具有与MySQL(https://www.postgresql.org/docs/9.1/queries-order.html)不同的默认排序。感兴趣的行是:

在这种情况下,实际顺序将取决于扫描和联接计划类型以及磁盘上的顺序,但一定不能依赖

最后,我实际上并不需要测试包含多个项目的列表,因此我只是删除了其他项目。

如果您正在处理需要支持MySQL和Postgres的内容,则可能需要考虑在查询中定义一致的排序顺序。