2017-02-22 95 views
1

我有一個.NET MVC應用程序,我正在使用NUnit編寫一些單元測試。ModelState.IsValid拋出一個異常類型System.IO.FileLoadException

這是我目前正在測試功能:

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Add(AddInstrumentViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var group = new FtpServerGroup 
     { 
      Disabled = true, 
      FtpLastPullTime = DateTime.Now, 
      FtpPullInterval = TimeSpan.Zero, 
     }; 

     await db.CreateAsync(group, model.Address, model.Username, model.Password); 

     // go back to card view 
     var res = await db.GetAll(); 
     return RedirectToAction("Index", res); 
    } 

    return View(model); 
} 

這是實際測試:

[Test] 
public async Task Test() 
{ 
    var controller = new AutomaticTransferController(mockService.Object); 

    var model = new AddInstrumentViewModel 
    { 
     Address = "124.124.124.124", 
     Password = "123456", 
     Username = "John Foo" 
    }; 

    var res = await controller.Add(model); 
} 

與我注意到調試器步進只要我進入。新增( )方法行if (ModelState.IsValid)拋出異常

ModelState.IsValid拋出了一個例外類型 System.IO.FileLoadException

事實上,拋出異常沒有告訴我什麼時候也不要安裝在

編輯

這是我InstrumentViewModel代碼

using System.ComponentModel.DataAnnotations; 

    public class AddInstrumentViewModel 
    { 
     [Display(Name = "IP Address or Domain Name")] 
     [Required] 
     [RegularExpression(@"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$")] 
     public string Address { get; set; } 

     [Display(Name = "FTP Username")] 
     [Required] 
     public string Username { get; set; } 

     [Display(Name = "FTP Password")] 
     [Required] 
     public string Password { get; set; } 
    } 
+0

提供AddInstrumentViewModel的代碼 – Fran

+0

您使用的是什麼版本的.net。我無法重現錯誤。當我重新創建示例的最小版本時,它會運行完成。同時顯示如何設置模擬服務 – Nkosi

+0

'FileLoadException'通常會給出以下消息:'無法加載文件或程序集...'。檢查更多的錯誤細節,內部異常和可能的缺失參考。 –

回答

1

我有同樣的問題。只需更新&合併nuget包。我不確定究竟是哪一個,因爲它們之間有很多依賴關係。