TaskController
ASP.NET MVC 3アプリケーション用に、サイトのユーザーにニュースレターを送信するなど、長時間実行されるタスク用に作成したいと思います。メールの送信には時間がかかる場合があるため、を使用するのAsyncController
が適切だと思いました。タスクの実行が終了したときに、データベースに状態を保存できるようにしたいと思います。
私は適切に育てられた開発者であり(:þ)、本当にBDDに夢中になっているので、当然、MSpecを使用した仕様から始めたいと思います。
私のコントローラーが次のようになっていると想像してください。
public class TaskController : AsyncController
{
readonly ISession _session;
public TaskController(ISession session)
{
_session = session;
}
public void SendMailAsync()
{
// Get emails from db and send them
}
public ActionResult SendMailCompleted()
{
// Do some stuff here
}
}
AsyncControllersの仕様を作成するにはどうすればよいですか?次の仕様から始めると想像してください。
public class TaskControllerContext
{
protected static Mock<ISession> session;
protected static TaskController controller;
protected static ActionResult result;
}
[Subject(typeof(TaskController), "sending email")]
public class When_there_is_mail_to_be_sent : TaskControllerContext
{
Establish context = () =>
{
session = new Mock<ISession>();
controller = new TaskController(session.Object);
};
// is this the method to call?
Because of = () => controller.SendMailAsync();
// I know, I know, needs renaming...
It should_send_mail;
}
SendMailAsync
テストのメソッドを呼び出す必要がありますか?私は実際に不機嫌に感じます。結果をどのように処理しSendMailCompleted
ますか?