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 パラメータ

RAND関数は、シードとして使用されるパラメーターをサポートしますRAND(N)

于 2012-11-15T10:52:25.183 に答える
0

通常、SQL 関数の単体テストは行いません。SQL 関数を呼び出すコードの単体テストを行います。

したがって、おそらく特定の戻り値をテストするのではなく、何らかの値が得られることをテストするだけです。クエリが値を返す場合、それが「機能している」ことがわかり、MySQL の内部技術から隔離されたままになります。また、クエリを変更する必要もありません。

于 2012-11-15T14:10:37.680 に答える