RPN计算器测试 - 首先不能强制Nil进入Fixnum

时间:2013-09-13 20:29:22

标签: ruby testing rspec null

当我尝试完成RPN计算器分配时,我一直收到错误,该分配是测试优先学习Ruby材料的一部分。当我进行以下rspec测试时,我得到“nil无法强制进入fixednum”并且无法获得“计算器为空”错误。任何帮助将非常感激。

it "fails informatively when there's not enough values stacked away" do
    expect {
      calculator.plus
    }.to raise_error("calculator is empty")    


class RPNCalculator
    attr_accessor :stack

def initialize
@stack = [0]
end

def push(x)
    @stack.push(x)
end
def plus

@stack.push(@stack.pop + @stack.pop)
end

def minus

@stack.push(-@stack.pop + @stack.pop)
end

def divide

denom = @stack.pop
@stack.push(@stack.pop.to_f / denom)
end

def times

@stack.push(@stack.pop * @stack.pop)
end



def value
    @stack.last
end

def pop(x)
    value = @stack.pop(x)
     raise "calculator is empty" if @stack.nil? 
     return value
end 


end

1 个答案:

答案 0 :(得分:0)

您收到该错误是因为您尝试在0方法中添加nilplusnil来自弹出空堆栈。

您没有收到错误,因为@stack永远不会是nil,因为您从未向其分配nil。然而,它将是empty?,这是您需要检查的内容。您还需要检查之前之前的条件以弹出堆栈。