4

是否可以在 MySQL 中为 RAND() 函数设置种子?我需要这个进行单元测试,以确保我知道预期的结果是什么。

在 PHP 中,只需执行以下操作:

<?php srand(12345); echo rand(); ?>

在我的模型中,我目前有一个查询,例如:

SELECT * FROM table ORDER BY RAND() LIMIT 1;

现在在我的单元测试中,我想确保我知道 RAND() 的种子是什么,所以我知道查询返回哪个记录。

也许通过在我的模型中的查询之前执行额外的查询?

我知道我可以向 RAND() 添加一个参数,但这不是我想要的;我不想修改查询。

PS。我正在使用 Linux;可能有助于为 /dev/random 设置种子吗?

4

2 回答 2

3

你可以参考这个:MySQL RAND with with parameter

RAND函数支持RAND(N)将用作种子的参数。

于 2012-11-15T10:52:25.183 回答
0

通常,我们不会对 SQL 函数进行单元测试,而是对调用 SQL 函数的代码进行单元测试。

因此,也许与其测试特定的返回值,不如测试您是否获得了一些价值。如果查询返回一个值,您就知道它正在“工作”并且您与 MySQL 的内部技术保持隔离。您也不必修改查询。

于 2012-11-15T14:10:37.680 回答