我正在编写一个 REST API,它以 JSON 格式从 Postgres 数据库返回产品。
我已经编写了集成测试来测试哪些产品会被退回,并且效果很好。刚刚引入了随机订购退回产品的要求。
我已将我的测试更改为不依赖结果返回的顺序。我的问题是测试新的随机要求。
我计划使用 Postgres 的 RANDOM()
关键字在数据库中实现它。如果我“在代码中”执行此操作,我可以将随机代码生成器 stub 以使其始终具有相同的值,但我不确定在数据库中要做什么。
我如何测试我的新随机要求是否有效?
最佳答案
我找到了一种方法来完成我需要的事情。
您可以 set the seed value for Postgres使用 SETSEED()
。
如果您在执行使用 RANDOM()
的查询之前设置种子,则结果每次都会以相同的顺序返回。
SELECT SETSEED(0.5);
SELECT id, title FROM products ORDER BY RANDOM() LIMIT 2;
种子值在 SELECT
查询后重置。
为了测试数据是否随机返回,我们可以更改种子值。
我不想测试 Postgres 的 RANDOM()
是否有效,但我使用它的代码确实有效。
关于ruby - 如何测试来自 Postgres 的随机排序数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958799/