Vâng, tôi biết, đó là phương pháp thử tin nó không phải là một ý tưởng tốt (và tôi đọc chủ đề này - http://www.ruby-forum.com/topic/197346 - và một số khác)phương pháp tư nhân kiểm tra trong Ruby (rspec)
Nhưng làm thế nào tôi có thể kiểm tra mã sau đây?
Tôi sử dụng xmpp4r. Trong phương pháp công cộng của tôi #listen
tôi bắt đầu nhận jabber thông điệp như sau:
def listen
@client.add_message_callback do |m|
do_things_with_message(m)
end
end
private
def do_things_with_message(m)
#
end
#add_message_callback
- chạy block, khi nhắn đến (trong chủ đề khác nhau)
Vì vậy, thử nghiệm #listen
phương pháp rất khó và nó kiểm tra thêm xmpp4r hơn tôi #do_things_with_message
làm thế nào để làm tất cả những quyền và kiểm tra #do_things_with_message
? :) (http://www.ruby-forum.com/topic/197346#859664)
Refactor phương pháp riêng cho một đối tượng mới essentialy sẽ như tôi làm cho chúng một cộng đồng (và lớp học với một phương pháp - đó là điên cuồng
EDIT: Đây là thêm một câu hỏi lý thuyết về mã sạch và kiểm tra chính xác. Trong liên kết đầu tiên của tôi, mọi người cho rằng phương pháp riêng tư thử nghiệm kém. Tôi không muốn ăn gian với #send
, nhưng tôi cũng không thấy bất kỳ cách nào khả thi để refactor
Đây không phải là một câu hỏi thực sự. Chủ đề bạn liên kết đã cung cấp cho bạn một số kỹ thuật để hoàn thành những gì bạn muốn và một số lời khuyên tốt về cách định hình thiết kế của bạn xung quanh vấn đề. Bạn có thể ăn gian và sử dụng 'send' hoặc chuyển phương thức công khai trong các bài kiểm tra của bạn, hoặc bạn có thể cấu trúc lại. – dbenhur
@ dbenhur Tôi không muốn ăn gian, nhưng tôi cũng không thấy bất kỳ cách nào khả thi để refactor – Andrey
Nếu mã của bạn đủ phức tạp mà bạn cần phải kiểm tra phương pháp riêng (nghĩa là nó không chỉ là một Mô hình đơn giản.tìm kiếm hoặc bất cứ điều gì), sau đó nó có thể rất phức tạp, đủ để có giá trị chiết xuất vào một lớp riêng biệt, anyway. – Jason