ASMXサービスを使用してsmsを送信するWebアプリケーションがありますが(現在は生産中で、正常に動作しています)、今は単体テストこの出願はしたがって、このアクションメソッドは、パラメータとして、ビューモデルを受信moqを使用して.NETでasmxサービスを使用するアプリケーションをテストする方法
public ActionResult CreateSms(SendSMSViewModel tblSend)
{
if (ModelState.IsValid)
{
if (_dbManager.SendSMS(tblSend.CellNumber, tblSend.Message, User.Identity.Name))
{
TempData["Success"] = "Message was successfully sent";
}
else
{
TempData["Error"] = "An error occured while sending the message";
}
}
return RedirectToAction("CreateSms");
}
、このvmodel 2つの特性(細胞数、メッセージ)を有している私は、ユニットテストに興味がある特定のアクションの方法で以下、ASMXサービスを消費しSMSを送信しているユーザーもいます。今私のユニットテストや統合に私は次のコードを、私は以下の方法(複数可)
public DatabaseManagerTest()
{
Mock<IDatabaseManager> moqDB = new Mock<IDatabaseManager>();
//Setup send sms test
moqDB.Setup(md => md.SendSMS("0734233173", "Test message", "Ronny.Mahlangu")).Returns(true);
this._mockDatabaseManager = moqDB.Object;
}
を模擬しようとしています。この最初の部分は、実際のテストできた(謝罪私はまた2を混乱させるために起こります)方法
public void TestSendSms()
{
bool results = this._mockDatabaseManager.SendSMS("0734233173", "Test message", "Ronny.Mahlangu");
Assert.IsTrue(results);
}
私のテストでは、このケースでは、私は唯一のSMSは、私はアクションメソッド自体をテスト行くのですか、首尾よく送信するかどうかをテストしています、しかし、私はまた、ユニットテストにアクションメソッド自体をしたい、渡すように見えます確かに私はasmxサービスを模擬する必要がありますが、私は空白です
またSendSMS
方法はASMXメソッドが呼び出されているところであるDatabaseManager
という名前のクラスから来て、ここではそのクラスからのコードの平和
public bool SendSMS(string cellNumber, string message, string logonName) {
if(string.IsNullOrWhiteSpace(cellNumber))
{
throw new ArgumentNullException("cell phone number is null");
}
if(string.IsNullOrWhiteSpace(message))
{
throw new ArgumentNullException("Sms message is null");
}
using (SMSService.SendSmsSoapClient sms = new SMSService.SendSmsSoapClient())
{
if (sms.SendDirect(cellNumber, message, ConfigurationManager.AppSettings["costCentre"], userLogonName, ConfigurationManager.AppSettings["source"]) == SMSService.Status.Successful)
{
SaveSmsDetails(cellNumber, message, userLogonName);
return true;
}
}
return false;
}