2016-04-04 9 views
1

Я написал службу обертки вокруг sendgrid, и все части работают, за исключением фактической отправки электронной почты.SendGrid не отправляет электронное письмо?

обслуживание:

public class SendGridService : ISendGridService 
    { 
     public async Task Send(Email email) 
     { 
      var preparedEmail = PrepareEmail(email); 
      var apiKey = ConfigurationManager.AppSettings["sendGridApiKey"]; 

      var transportWeb = new Web(apiKey); 
      await transportWeb.DeliverAsync(preparedEmail); 

     } 

     //other methods that prepare the email 
    } 

класс Test Я использую, чтобы увидеть, если письмо будет отправлено:

[Test] 
    public void Send_ShouldSendEmailToOneAddress() 
    { 
     //arrange 
     //uses NBuilder to mock the object 
     var email = Builder<Email>.CreateNew() 
      .With(x => x.Recipient = "[email protected]") 
      .With(x => x.Sender = "[email protected]") 
      .With(x => x.SenderName = "me") 
      .With(x => x.FilePathAttachement = null) 
      .With(x => x.Html = null) 
      .Build(); 

     //act 
     var temp = _sut.Send(email); 


     //assert 

    } 

Я понимаю, что тест Isnt acually тестирования ничего, но я надеялся, чтобы посмотреть электронную почту в мой почтовый ящик, а затем написать истинные ложные тесты вокруг кода.

Я никогда не получаю письмо, это проблема. Что мне не хватает, чтобы отправить письмо по электронной почте.

+0

Если вы входите в сетку отправки, вы получаете/обрабатываете sendgrid? – cal5barton

+0

Как выглядит ваш метод «DeliverAsync»? – X3074861X

+0

@ cal5barton Нет, Что касается SendGrid, ничего не происходит – Robert

ответ

1

Вы не вызываете свой метод асинхронной проверки правильно. в контексте модульного тестирования должно быть:

[Test] 
public async Task Send_ShouldSendEmailToOneAddress() 
{ 
    //arrange 
    //uses NBuilder to mock the object 
    var email = Builder<Email>.CreateNew() 
     .With(x => x.Recipient = "[email protected]") 
     .With(x => x.Sender = "[email protected]") 
     .With(x => x.SenderName = "me") 
     .With(x => x.FilePathAttachement = null) 
     .With(x => x.Html = null) 
     .Build(); 

    //act 
    await _sut.Send(email); 


    //assert 

} 

А именно:

1) изменить свой тест, чтобы вернуть async Task вместо void

2) await ваш метод асинхронной

Когда вы используете своего почтового отправителя в своей программе, вам необходимо убедиться, что ваше использование async/await: 'all the way down'

+0

Это дает мне ошибку компилятора: не удается назначить void неявно типизированной переменной, где я назначаю систему под Test temp. – Robert

+0

@Robert исправлено .. просто удалите 'temp' (ваш' SendGridService' ничего не возвращает) – wal

Смежные вопросы