Тестирование кода выполнения с RSpec - PullRequest
0 голосов
/ 22 марта 2012

У меня есть кусок кода для тестирования, который не заключен в метод.Он просто сам по себе в классе Ruby.

begin
  # Do stuff - bunch of Ruby code
end

Это не приложение Rails.Это отдельный класс Ruby.Я не хочу выполнять весь оператор начала и конца в моих тестах rspec.Как вы тестируете что-то подобное?Должно ли это быть сделано с помощью макетов / заглушек?Я спросил пару человек, но они также не знали ответа.

1 Ответ

1 голос
/ 22 марта 2012

Я обнаружил, что это легче проверить, если вы можете инкапсулировать поведение в методе или модуле, но это действительно зависит от того, какой код вы пытаетесь выполнить.Если код приводит к общему изменению класса, вы можете написать тесты вокруг факта, что класс ведет себя так, как ожидалось в памяти.Например:

class Foo
  attr_accessor :bar
end

describe Foo
  it "should have an attr_accessor bar" do
    foo = Foo.new
    foo.bar = "baz"
    foo.bar.should == "baz"
  end
end

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

Мне повезло в прошлом, переписав этот тип поведенияв метод, который может быть вызван явно.Это значительно облегчает тестирование, а также упрощает понимание времени при устранении неполадок.Например:

class Foo
  def self.run
    # do stuff
  end
end

Можете ли вы предоставить немного больше информации о том, что вы пытаетесь делать в своем классе?

...