Nauka Rspec, praca z Ruby, a nie z Railsami. Mam skrypt, który działa zgodnie z oczekiwaniami z wiersza poleceń, ale nie mogę przejść testu.Nieoczekiwane zachowanie rspec
Odpowiedni kod:
class Tree
attr_accessor :height, :age, :apples, :alive
def initialize
@height = 2
@age = 0
@apples = false
@alive = true
end
def age!
@age += 1
end
A spec:
describe "Tree" do
before :each do
@tree = Tree.new
end
describe "#age!" do
it "ages the tree object one year per call" do
10.times { @tree.age! }
expect(@age).to eq(10)
end
end
end
i błąd:
1) Tree #age! ages the tree object one year per call
Failure/Error: expect(@age).to eq(10)
expected: 10
got: nil
(compared using ==)
myślę, że wszystko jest odpowiedni kod, proszę dać mi znać jeśli brakuje mi czegoś w kodzie, który napisałem. Z tego, co mogę powiedzieć, wynika, że błąd pochodzi z zasięgu w rspec, a zmienna @age nie jest przekazywana do testu rspec w sposób, który moim zdaniem powinien, a zatem jest zerowy, gdy próbuje wywołać funkcję w teście.
Dzięki, działa zgodnie z oczekiwaniami. Mój problem polegał na tym, że skoro metoda została wywołana w tym samym bloku, co rspec "oczekuj", Ruby magicznie zrozumiałaby to, o co prosiłem. Właśnie zdałem sobie sprawę, że miałem ten sam problem kilka miesięcy temu w innym kontekście - będę pamiętać następnym razem. –