Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 随机生成值的doctest_Unit Testing_Random_Elixir_Doctest - Fatal编程技术网

Unit testing 随机生成值的doctest

Unit testing 随机生成值的doctest,unit-testing,random,elixir,doctest,Unit Testing,Random,Elixir,Doctest,给定以下代码: defmodule Pullapi.do 导入Pullapi.number @moduledoc”“” 生成训练表示的函数 """ @“医生” 返回由用户可以执行的“最大重复次数”、“百分比”和 最大附加或递减重复次数,`rep_-bound`。 ##例子 iex>Pullapi.训练.上拉(20,60,5) %{“动作”=>“上拉”,“单位”=>“14”} """ @规格上拉_集(整数、整数、整数)::map() def上拉设置(最大重复次数、百分比、限制重复次数)do 中位数

给定以下代码:

defmodule Pullapi.do
导入Pullapi.number
@moduledoc”“”
生成训练表示的函数
"""
@“医生”
返回由用户可以执行的“最大重复次数”、“百分比”和
最大附加或递减重复次数,`rep_-bound`。
##例子
iex>Pullapi.训练.上拉(20,60,5)
%{“动作”=>“上拉”,“单位”=>“14”}
"""
@规格上拉_集(整数、整数、整数)::map()
def上拉设置(最大重复次数、百分比、限制重复次数)do
中位数=最大重复次数*(百分比/100)
单位范围=Pullapi.数字.中值范围(四舍五入(中位数),代表范围)
单位=枚举随机(单位范围)
%{“动作”=>“上拉”、“单位”=>“{Units}”
结束
结束
doctest
失败,原因是:

1)Pullapi.Workout.pullup\u set/3(1)处的测试文件(Pullapi测试)
测试/pullapi_测试。exs:4
博士测试失败
代码:Pullapi.Workout.pullup_set(20,60,5)==%{“动作”=>“上拉”、“单位”=>“14”}
左:%{“动作”=>“上拉”,“单位”=>“8”}
堆栈跟踪:
lib/pullapi/workout.ex:13:pullapi.workout(模块)

有没有办法指定
“单位”
值是随机生成的?看起来我正在遵循Enum。random的doctest显式地为测试设置种子值,这使得以后调用
:rand
函数的结果具有确定性

iex(1)> for _ <- 1..10 do
...(1)>   :rand.seed(:exsplus, {101, 102, 103})
...(1)>   Enum.random([1, 2, 3])
...(1)> end
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

然后在doctest中硬编码返回的值。您的测试现在应该通过,直到Erlang的rand模块的内部更改为止。

Enum.random
的doctest显式地为测试设置种子值,这使得将来调用
:rand
函数的结果具有确定性

iex(1)> for _ <- 1..10 do
...(1)>   :rand.seed(:exsplus, {101, 102, 103})
...(1)>   Enum.random([1, 2, 3])
...(1)> end
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

然后在doctest中硬编码返回的值。您的测试现在应该通过,直到Erlang的rand模块的内部更改。

谢谢-我现在对种子设定的工作原理有了更清晰的了解。谢谢-我现在对种子设定的工作原理有了更清晰的了解。