使用 PostgreSQL 时单元测试产生不同的结果
Unit tests producing different results when using PostgreSQL
一直在开发一个在使用 MySQL 时运行良好的模块,但是当我尝试 运行 单元测试时,我在 PostgreSQL 下(使用 Travis)进行测试时遇到错误。
模块本身在这里:https://github.com/silvercommerce/taxable-currency
这里是失败构建的示例:https://travis-ci.org/silvercommerce/taxable-currency/jobs/546838724
我没有太多使用 PostgreSQL 的经验,但我不确定为什么会发生这种情况?我认为唯一可能导致这种情况的原因是我试图在我的固定文件中手动设置 ID,也许 PostgreSQL 不支持这个?
如果不是这种情况,有人知道是什么导致了这个问题吗?
编辑:我再次调查了这个错误似乎是因为 this assertion, which should be finding the Tax Rate vat but instead finds the Tax Rate reduced
我猜我的逻辑有问题导致返回错误的汇率,但我不确定为什么...
最后看来 Postgres 的默认排序与 MySQL (https://www.postgresql.org/docs/9.1/queries-order.html) 不同。感兴趣的行是:
这种情况下的实际顺序将取决于扫描和连接计划类型以及磁盘上的顺序,但不能依赖
最后我真的不需要测试包含多个项目的列表,所以我只是删除了额外的项目。
如果您正在处理需要支持 MySQL 和 Postgres 的内容,您可能需要考虑将一致的排序顺序定义为查询的一部分。
一直在开发一个在使用 MySQL 时运行良好的模块,但是当我尝试 运行 单元测试时,我在 PostgreSQL 下(使用 Travis)进行测试时遇到错误。
模块本身在这里:https://github.com/silvercommerce/taxable-currency
这里是失败构建的示例:https://travis-ci.org/silvercommerce/taxable-currency/jobs/546838724
我没有太多使用 PostgreSQL 的经验,但我不确定为什么会发生这种情况?我认为唯一可能导致这种情况的原因是我试图在我的固定文件中手动设置 ID,也许 PostgreSQL 不支持这个?
如果不是这种情况,有人知道是什么导致了这个问题吗?
编辑:我再次调查了这个错误似乎是因为 this assertion, which should be finding the Tax Rate vat but instead finds the Tax Rate reduced
我猜我的逻辑有问题导致返回错误的汇率,但我不确定为什么...
最后看来 Postgres 的默认排序与 MySQL (https://www.postgresql.org/docs/9.1/queries-order.html) 不同。感兴趣的行是:
这种情况下的实际顺序将取决于扫描和连接计划类型以及磁盘上的顺序,但不能依赖
最后我真的不需要测试包含多个项目的列表,所以我只是删除了额外的项目。
如果您正在处理需要支持 MySQL 和 Postgres 的内容,您可能需要考虑将一致的排序顺序定义为查询的一部分。