0

以下のコードでは、require の後にアクション クラスが返されます。

ロボットクラス

attr_accessor :action

    def initialize 
        @action = Actions.new
    end

    def left
        @action.left
    end

Action クラスはDirection::Move.new、initialize メソッドで定義されたインスタンスを使用するようになりました。

アクション クラス

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_accessorrobot.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.leftdirectionaction.left

4

1 に答える 1