Theo dõi các class có cùng Namespace

Keller

New Member
#1
Mình đang tạo spy cho hai class thuộc cùng một Namespace với mục tiêu mong muốn mỗi class nhận các đối số cụ thể:
Mã:
allow(SibApiV3Sdk::SendSmtpEmail).to receive(:new).and_return(seb_send_email)
allow(SibApiV3Sdk::SMTPApi).to receive(:new).and_return(seb_smtp_api)

def seb_send_email
  @seb_smtp_api ||= SibApiV3Sdk::SendSmtpEmail.new(email_params)
end

def seb_smtp_api
  @seb_smtp_api ||= SibApiV3Sdk::SMTPApi.new
end
Khi mình làm như trên thì spy thứ hai không hoạt động đúng và trả về đối tượng spy đầu tiên thay thế. Mình nghi ngờ điều này có liên quan đến việc nó là một class namespace. Có cách tiếp cận khác để xử lý các spy trong class namespace không?
 

Admin

Administrator
Thành viên BQT
#2
Bạn gán cả hai cho biến @seb_smtp_api và đó là nguồn gốc các vấn đề của bạn.

Bạn có thể gọi phương thức seb_send_email trước, sau đó nó được ghi nhớ là @seb_smtp_api và khi bạn gọi seb_smtp_api nó chỉ trả về giá trị ghi nhớ.

Bạn có thể check bằng cách thay thế allow với expect và thấy rằng phương thức của SibApiV3Sdk::SMTPApi.new không bao giờ được gọi.
 

Từ khóa phổ biến

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

Top