我有下面的代码,其中在需要之后返回动作类
机器人类
attr_accessor :action
def initialize
@action = Actions.new
end
def left
@action.left
end
现在 Action 类使用Direction::Move.new
在初始化方法下定义的实例。
动作类
def place(x_coordinate, y_coordinate, direction = :north)
@x_coordinate = x_coordinate
@y_coordinate = y_coordinate
@direction = direction
@report.log_position(x_coordinate, y_coordinate, direction) if
x_coordinate.between?(@board.left_limit, @board.right_limit) &&
y_coordinate.between?(@board.bottom_limit, @board.top_limit) &&
@move.directions.grep(direction).present?
end
def left
@move.left(direction)
end
我现在已经用 place 方法定义了 Actions 类,所以方向被分配给attr_accessor
然后robot.left
被调用
describe '#left' do
it 'should turn left' do
action.place(0, 0, Direction::North)
expect(robot.left).to eq(Direction::West)
end
end
但是当我做 Rspec 测试时,它返回以下错误:
RSpec: no implicit conversion from nil to integer
为什么robot.left
调用action.left
不允许direction
传递给此action.left
方法?