Trên một mô hình dữ liệu mongoid đơn giản với người dùng có nhiều nhận xét, tôi muốn trao giải thưởng cho người dùng khi có ít nhất 1 nhận xét. Vì vậy, tôi thiết lập một quan sát viên như thế này:Làm thế nào để kiểm tra Mongoid :: Observer với rspec
class CommentBadgeObserver < Mongoid::Observer
observe :comment
def after_create(comment)
CommentBadge.check_conditions_for(comment.user)
end
end
class CommentBadge < Badge
def self.check_conditions_for(user)
if user.comments.size > 1
badge = CommentBadge.create(:title => "Comment badge")
user.award(badge)
end
end
end
Phương pháp user.award: (? Nhưng tôi đoán nó là bình thường vì các quan sát viên được thực hiện ở chế độ nền)
def award(badge)
self.badges << badge
self.save
end
Các thử nghiệm sau thất bại
Cách tốt nhất để xác thực hành vi này là gì?
Nó hoạt động tuyệt vời! Cảm ơn rất nhiều Steve! – obo
Điều đó là tốt để biết và cảm ơn bạn. Bạn có làm cho nó hoạt động trong Rails của bạn và đó có phải là người theo dõi người quan sát hay cái gì khác không? – Steve
Có, tôi đã làm việc đó trong đơn đăng ký của mình; Tôi đã phải thiết lập hai dòng của instantiation instantiation trong tập tin spec của tôi. – obo