Я обнаружил, что это легче проверить, если вы можете инкапсулировать поведение в методе или модуле, но это действительно зависит от того, какой код вы пытаетесь выполнить.Если код приводит к общему изменению класса, вы можете написать тесты вокруг факта, что класс ведет себя так, как ожидалось в памяти.Например:
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
Можете ли вы предоставить немного больше информации о том, что вы пытаетесь делать в своем классе?