使用Rspec测试Mailchimp 3.0和Gibbon 2.x.

我有一个rails 4.2应用程序,通过MailChimp使用Gibbon gem进行简报注册。

这是我的初始化程序:

Gibbon::Request.api_key = ENV['MAILCHIMP_API_KEY'] Gibbon::Request.timeout = 15 Gibbon::Request.throws_exceptions = false 

以下是user.rb中的相关方法:

  # returns the mailchimp member if one exists for @user.email def mailchimp_user gb = Gibbon::Request.new(api_key: ENV['MAILCHIMP_API_KEY']) gb.lists(ENV['MAILCHIMP_LIST_ID']).members(Digest::MD5.hexdigest("#{self.email.downcase}")).retrieve rescue Gibbon::MailChimpError => e return nil, :flash => { error: e.message } end def mailchimp_member_id if self.mailchimp_user.kind_of?(Array) return nil elsif self.mailchimp_user.kind_of?(Hash) self.mailchimp_user["id"] end end # returns the mailChimp status of the user def mailchimp_status if self.mailchimp_user.kind_of?(Array) return nil elsif self.mailchimp_user.kind_of?(Hash) self.mailchimp_user["status"] end end # syncs Mailchimp status to EBW, subscribing and unsubscribing users as appropriate. potential MC status includes # 'subscribed', 'unsubscribed', 'pending' and 'cleaned' def add_to_mailchimp gb = Gibbon::Request.new(api_key: ENV['MAILCHIMP_API_KEY']) if self.subscribed? # if the user has checked the "subscribed" checkbox if self.mailchimp_status.present? # if MailChimp recognizes the email address gb.lists(ENV['MAILCHIMP_LIST_ID']).members(Digest::MD5.hexdigest("#{self.email.downcase}")).update(body: { status: "subscribed" }) #subscribe user elsif self.mailchimp_status.nil? # if MailChimp doesn't have a user for the email address gb.lists(ENV['MAILCHIMP_LIST_ID']).members.create(body: { # create a MailChimp pending subscriber email_address: "#{self.email}", status: "pending", # setting this to 'subscribed' will remove double optin merge_fields: {FNAME: "#{self.name}"} }) end # unsubscribe user if box is unchecked but mailchimp has user as subscribed or pending else unless self.mailchimp_user.kind_of?(Array) gb.lists(ENV['MAILCHIMP_LIST_ID']).members(self.mailchimp_member_id).update(body: { status: "unsubscribed" }) end end end 

我仍然在学习Rspec,并且在Gibbon :: MailChimp的上下文中应用它时遇到了麻烦。 我想测试订阅,取消订阅根据用户的当前状态按预期工作。 例如,取消订阅的用户与需要创建MailChimp订阅的新订阅者的处理方式不同。