Как использовать параметры в конструкторе в модели рельсов - PullRequest
3 голосов
/ 06 декабря 2011

Я пытаюсь узнать tdd, используя RSpec.Я взял этот пример из шпаргалки, которую нашел в Интернете, и немного запутался, как бы я его реализовал.Добавление MovieList.new происходит автоматически, но как мне добавить параметр, если он уже обработан с помощью ActiveRecord.А затем добавить метод 'forward'.

describe "forward" do
  it "should jump to a next movie" do
    next_movie = MovieList.new(2).forward
    next_movie.track_number.should == 2
  end
end

Ответы [ 2 ]

5 голосов
/ 06 декабря 2011

Если это тест для класса MovieList, создайте класс с именем MovieList.

Затем в своем конструкторе для этого класса убедитесь, что он принимает параметр с именем track_number, в вашем тесте это 2.

Затем создайте метод, называемый forward, чтобы делать то, что вам нужно?

Вот хороший пример того, куда я иду с этим: http://rspec.info/

Это может звучать неоднозначно, но так был вопрос.


EDIT: Это грубое представление о том, как создать новый класс MovieList и инициализировать его параметром с именем track_number.

def MovieList
  attr_accessor :track_number

  def initialize(track_number)
    @track_number = track_number
  end

  # You can define all your class methods below, you 
  # can start with forward.

  def forward
    # do something...
  end 

end
1 голос
/ 07 декабря 2011
movie = Movie.new(:track_number => 2)
movie.forward

Я не уверен, что forward делает в вашем примере, потому что вы, похоже, инициализируете track_number равным 2, а затем вызываете forward. Я бы ожидал, что track_number увеличится, но ваш тест проверяет, все ли еще 2.

Заметьте, я не верю, что вам нужно менять конструктор, чтобы он брал параметр, пока вы передаете его как хеш (в моем примере подразумевается хэш с одним членом) ... может кто-то проверить или опровергнуть это последнее утверждение?

...