1

私は次の方法でWCFサービスを持っています:

Public Function ScheduleEmail(ByVal request As ScheduleEmailRequest) As     ScheduleEmailResponse _
    Implements EmailProtocol.ISchedulingService.ScheduleEmail

    Try
        If Not Email.IsValidEmailAddress(request.EmailAddress) Then
            EmailSchedulerTrace.Source.WriteError(String.Format("Email with template   '{0}' was not sent to '{1}' because it the address is invalid.", request.EmailName, request.EmailAddress))
        Else
            Dim mgr As New JobManager
            Dim job As New EmailJob
            Dim suppression As New SuppressionManager

            Dim emailItem As Email = Email.GetEmailByName(request.EmailName)
            If suppression.CheckSuppresion(emailItem, request.EmailAddress) Then
                job.JobGuid = Guid.NewGuid
                job.EmailAddress = request.EmailAddress
                job.EmailGuid = emailItem.ID
                job.ScheduledSendTime = request.ScheduledTime
                job.CustomAttributes = request.CustomAttributes
                job.ConsumerID = Email.GetConsumerId(request.CustomAttributes)

                mgr.ScheduleJob(job)
            Else
                EmailSchedulerTrace.Source.WriteWarning(String.Format("Email with template '{0}' was not sent to '{1}' because it was suppressed.", request.EmailName, request.EmailAddress))
            End If

        End If

    Catch ex As Exception
        EmailSchedulerTrace.Source.WriteError(ex)
        Throw
    End Try

    Return New ScheduleEmailResponse

End Function

このメソッドの単体テストを作成する必要があります。私を助けてください

  • メソッドで何か変更する必要がありますか?
  • 私は何を嘲笑すべきですか?

よろしくお願いいたします。前もって感謝します。よろしく、サチン

4

1 に答える 1

0

他のシステム (データベース、電子メール サーバーなど) に接続する「サービス」 (クラス内のメソッドまたはフィールドで使用するクラス) を交換できる必要があるため、クラスの を作成し、実行時および単体テストで正しく実装するには、テスト目的で実装を作成できます。newinterfacemockfake

次のインターフェイスを定義することから始めるとよいでしょう。

  • JobManager
  • EmailSchedulerTrace
  • SuppressionManager

静的メソッドの機能を移動する必要がある場合もありますEmail

  • GetEmailByName
  • GetConsumerId

それらがデータベースアクセスまたは分離できないその他のサービスをカプセル化する場合。

于 2013-08-02T11:09:42.290 に答える