测试是否在Meteor Velocity中发送电子邮件

时间:2015-05-06 14:54:44

标签: testing meteor meteor-velocity

是否可以确认在Meteor Velocity测试中发送电子邮件?

我以为我可以在tests中使用同名的方法覆盖/复制方法,但这不起作用。我试过这个:

在我的常规代码中:

Meteor.methods(
   email: (parameters) ->
      sendAnEmail(parameters)
)

tests

Meteor.methods(
   email: (parameters) ->
      differentBehaviorForTesting(parameters)
      # I could call some super() here if necessary
)

但这总是让我得到一个

Error: A method named 'email' is already defined

1 个答案:

答案 0 :(得分:2)

您还可以创建一个类似于此的电子邮件夹具:

  var _fakeInboxCollection = new Package['mongo'].Mongo.Collection('Emails');

  Meteor.startup(function () {
    _clearState();
    _initFakeInbox();
  });

  Meteor.methods({
    'clearState': _clearState,
    'getEmailsFromInboxStub': function () {
      return _fakeInboxCollection.find().fetch()
    }
  });

  function _initFakeInbox () {
    _fakeInboxCollection.remove({});
    Email.send = function (options) {
      _fakeInboxCollection.insert(options);
    };
  }

  function _clearState () {
    _fakeInboxCollection.remove({});
  }

这将允许您正常发送电子邮件,并使用DDP清除/获取电子邮件。