A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Ruby

Curso de Ruby

Sim贸n Soriano

Sim贸n Soriano

Generando comida aleatoria: uso de rand y stub en pruebas

37/39
Recursos

Aportes 3

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Me hubiese gustado que incluyera m谩s ejemplos de stub y Mock o al menos que explicara un poco de la documentaci贸n.

Y cuando la comida aparece donde ya est谩 la serpiente?

def self.new_food(grid, state)
	pos = [rand(grid.rows), rand(grid.cols)]
	pos = [rand(grid.rows), rand(grid.cols)] while state.snake.positions.include? pos
	food = Game::Food.new(*pos)
	state.food = food
end

test

def test_generate_food
    @inital_state =
      Model::State.new(
        Model::Snake.new(
          Model::Coord.new(1, 1),
          Model::Coord.new(0, 1)
        ),
        Model::Food.new(2, 1),
        Model::Grid.new(8, 12),
        Direction::DOWN,
        false
    )

    expected_state =
      Model::State.new(
        Model::Snake.new(
          Model::Coord.new(2, 1),
          Model::Coord.new(1, 1),
          Model::Coord.new(0, 1)
        ),
        Model::Food.new(0, 0),
        Model::Grid.new(8, 12),
        Direction::DOWN,
        false
    )
    Actions.stub(:rand, 0) do
      actual_state = Actions::move_snake(@initial_state)
      assert_equal expected_state, actual_state
    end
  end

actions

  def generate_food(state)
    new_food = Model::Food.new(rand(state.grid.rows), rand(state.grid.cols))
    state.food = new_food
    state
  end

  def self.position_is_food(state, next_position)
    state.food.row == next_position.row && state.food.col == next_position.col
  end

  def self.grow_snake(state, next_position)
    new_snake = [next_position] + state.snake
    state.snake = new_snake
    state
  end