Học Rspec, chỉ làm việc với Ruby chứ không phải Rails. Tôi có một kịch bản hoạt động như mong đợi từ dòng lệnh, nhưng tôi không thể vượt qua bài kiểm tra.Hành vi rspec bất ngờ
Mã liên quan:
class Tree
attr_accessor :height, :age, :apples, :alive
def initialize
@height = 2
@age = 0
@apples = false
@alive = true
end
def age!
@age += 1
end
Và 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
Và các lỗi:
1) Tree #age! ages the tree object one year per call
Failure/Error: expect(@age).to eq(10)
expected: 10
got: nil
(compared using ==)
Tôi nghĩ rằng đó là tất cả các mã có liên quan, xin vui lòng cho tôi biết nếu tôi thiếu một cái gì đó trong mã tôi đăng. Từ những gì tôi có thể nói lỗi đến từ phạm vi trong rspec, và biến @age không được chuyển vào thử nghiệm rspec theo cách mà tôi nghĩ nó nên, vì vậy không phải khi cố gắng gọi hàm trong thử nghiệm.
Xin cảm ơn, hoạt động như mong đợi. Vấn đề của tôi đã suy nghĩ rằng vì phương pháp này được gọi trong cùng một khối như rspec 'mong đợi' Ruby sẽ kỳ diệu hiểu những gì tôi đã hỏi. Tôi mới nhận ra rằng tôi đã có cùng một vấn đề vài tháng trước trong một bối cảnh khác - tôi sẽ nhớ lần sau. –