2016-04-04 8 views
1

私はsendgridの周りにwrappperサービスを書いており、実際の電子メールの送信を除いてすべての部分が動作します。SendGridはメールを配信していませんか?

サービス:

[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 

    } 

は、私がテストイマイチを実現acually何かをテストするが、私がメールを見て期待していた:私は、電子メールが送信されたかどうかを確認するために使用しています

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クラス私の受信箱に入れて、コードの真の偽のテストを書いてください。

メールが届かないことが問題です。電子メールを実際に送信するためには何が欠けていますか。

+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を代入できません。 – Robert

+0

@Robertが修正しました.. 'temp'を削除してください(あなたの' SendGridService'は何も返しません) – wal

関連する問題