Apprendimento Rspec, funzionante con solo Ruby, non Rails. Ho uno script che funziona come previsto dalla riga di comando, ma non riesco a far passare il test.Comportamento rspec inatteso
Il codice rilevante:
class Tree
attr_accessor :height, :age, :apples, :alive
def initialize
@height = 2
@age = 0
@apples = false
@alive = true
end
def age!
@age += 1
end
E la specifica:
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
E l'errore:
1) Tree #age! ages the tree object one year per call
Failure/Error: expect(@age).to eq(10)
expected: 10
got: nil
(compared using ==)
penso che è tutto il codice relativo, per favore fatemelo sapere se mi manca qualcosa nel codice che ho postato. Da quello che posso dire l'errore viene dall'ambito di scope all'interno di rspec, e la variabile @age non viene passata nel test rspec in un modo che penso che dovrebbe, risultando quindi nullo quando si tenta di chiamare la funzione all'interno del test.
Grazie, funziona come previsto. Il mio problema era pensare che dal momento che il metodo veniva chiamato nello stesso blocco di rspec "aspetta" Ruby avrebbe magicamente capito cosa stavo chiedendo. Mi sono appena reso conto che ho avuto lo stesso problema mesi fa in un contesto diverso - ricorderò la prossima volta. –