mysql为rand设置种子

时间:2012-11-15 10:20:25

标签: mysql unit-testing random seed

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

在PHP中,我们只会这样做:

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以参考:MySQL RAND with with parameter

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

答案 1 :(得分:0)

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

所以也许不是测试特定的返回值,只是测试你得到一些值。如果查询返回一个值,您知道它正在“工作”,并且您仍然与MySQL的内部技术保持隔离。您也不必修改您的查询。