Ruby 模具的Rspec试验';s失败的边数
嘿,伙计们,我是rspec的初学者,有谁能帮我解决这个问题吗。 我的测试Ruby 模具的Rspec试验';s失败的边数,ruby,rspec,Ruby,Rspec,嘿,伙计们,我是rspec的初学者,有谁能帮我解决这个问题吗。 我的测试返回模具拥有的边数失败,我做错了什么 require 'rspec' require_relative 'die' describe Die do describe '#initialize' do it 'expects a single argument' do expect(Die.instance_method(:initialize).arity).to eq 1 end
返回模具拥有的边数
失败,我做错了什么
require 'rspec'
require_relative 'die'
describe Die do
describe '#initialize' do
it 'expects a single argument' do
expect(Die.instance_method(:initialize).arity).to eq 1
end
it 'raises ArgumentError if sides are < 1' do
expect {
Die.new(-1)
}.to raise_error(ArgumentError)
expect {
Die.new(0)
}.to raise_error(ArgumentError)
end
end
describe 'Instance method' do
before(:each) do
@sides = rand(50)
@die = Die.new(@sides)
end
context '#num_of_sides' do
it 'expects method to have no arguments' do
expect(Die.instance_method(:num_of_sides).arity).to eq 0
end
it 'returns the number of sides that the die possesses' do
expect(@die.num_of_sides).to eq @sides
end
end
context "#roll" do
it 'expects roll method to have no arguments' do
expect(Die.instance_method(:roll).arity).to eq 0
end
it "returns a random number between 1 and number_of_sides" do
rolls = Array.new(10000) {@die.roll}.uniq.sort
possible_values = (1..@sides).to_a
expect(rolls).to eq possible_values
end
end
end
end
需要“rspec”
需要相对的“死亡”
描述做什么
描述“#初始化”do
它“只需要一个参数”就可以了
expect(Die.instance_method(:initialize.arity))到等式1
结束
如果边数小于1,则会引发错误
期待{
新模具(-1)
}.引发_错误(ArgumentError)
期待{
新模具(0)
}.引发_错误(ArgumentError)
结束
结束
描述“实例方法”是什么
在…之前做
@侧面=兰特(50)
@模具=模具。新(@侧面)
结束
上下文“#num_of_side”do
它“期望方法没有参数”do
expect(Die.instance_method(:num_of_sides).arity)到等式0
结束
它“返回模具拥有的边数”do
期望(@die.num\u of_sides)。均衡@sides
结束
结束
上下文“#滚动”do
它“期望roll方法没有参数”do
expect(Die.instance_method(:roll.arity).to eq 0
结束
它“返回一个介于1和边数之间的随机数”
rolls=Array.new(10000){@die.roll}.uniq.sort
可能的_值=(1..@sides)。到_a
期望(转鼓)。均衡可能的_值
结束
结束
结束
结束
红宝石模具类:
class Die
def initialize(sides)
raise ArgumentError if sides < 1
end
def num_of_sides(sides=nil)
if sides!=nil
Random.rand(50)
else
0
end
end
def roll()
end
end
类模具
def初始化(侧面)
如果边数小于1,则引发错误
结束
def num of_sides(sides=nil)
如果你站在一边=无
随机。兰特(50)
其他的
0
结束
结束
def辊()
结束
结束
输出:6个示例,2个失败,4个通过
您尚未实现
Die
类,以便它记住实例化时使用的边数
为此,您通常会使用实例变量,例如@num\u of_sides
,并在检查有效输入后,将其设置为构造函数中的sides
参数
要读取边数,您可以只返回@num\u of_sides
的值(将现有方法更改为更简单,它不需要任何参数,只需要返回存储的值,不需要测试/逻辑或随机性),或者您可以使用捷径attr\u reader:num\u of_sides
,为您创建该方法
值得回顾一下关于Ruby实例变量的任何注释,因为这似乎是您仍然需要掌握的东西。或者你可以看看这个