appharborにデプロイしているアプリを書いています。テストを拡張したため、プロジェクトをビルドするのに問題があります。問題は、データベースにテストシードデータを入力するためにdb初期化子を使用していることだと思います。これらのテストは私のローカルボックスで合格しますが、一度デプロイすると、appharborでテストが失敗します。データをモックする必要があると思いますが、その方法がわかりません。例として、アクションメソッドの1つに対して行ったコントローラーテストを次に示します。
コントローラ
// GET: /Lead/Url
// TODO: Add optional url parameters
public ActionResult Url(string pfirstname, string plastname, string phone, int leadsource)
{
var lead = new Lead();
//store
lead.parent_FirstName = pfirstname;
lead.parent_LastName = plastname;
lead.parent_Phone = phone;
lead.LeadSourceID = leadsource;
lead.AgentID = 1;
if (ModelState.IsValid)
{
leadRepository.InsertLead(lead);
leadRepository.Save();
ViewBag.Message = "Success";
}
return View(lead);
}
//
// POST: /Lead/URL
[HttpPost, ActionName("Url")]
public ActionResult Url(Lead lead)
{
return View();
}
単体テスト
[TestMethod]
public void LeadUrl()
{
//ARRANGE
ILeadRepository leadrepository = new LeadRepository(new LeadManagerContext());
Database.SetInitializer<LeadManagerContext>(new LeadManagerInitializer());
LeadController controller = new LeadController(leadrepository);
//ACT
ViewResult result = controller.Url("Brad", "woods","465-456-4965",1) as ViewResult;
var lead = (Lead)result.ViewData.Model;
//ASSERT
Assert.AreEqual("Success" ,result.ViewBag.Message);
/*check for valid data */
Assert.AreEqual("Brad", lead.parent_FirstName);
}
このようなコードを改善し、アプリハーバーで正常に実行できるようにするために、次に何をする必要があるかを誰かに説明してもらえますか?