前提・実現したいこと
C#での単体テストについてお伺いしたいです。
単体テスト時にLargeViewModelの中のIEnumerable型のUserViewModelにアクセスしたいのですが、「Objectに定義
が含まれていない」といわれます。
ご教授ねがいます!!
環境
ASP.NET MVC
OS Windows10
Visual Studio のバージョン Microsoft Visual Studio Community 2019 Version16.11.3
.NET Framework 4.8
発生している問題・エラーメッセージ
CS1061
'<型>' に '<名前>' の定義が含まれておらず、型 '<型>' の最初の引数を受け付けるアクセス可能な拡張メソッド '<名前>' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
該当のソースコード
Controller
C#
1public ActionResult Index() 2 { 3 LargeViewModel vm = new LargeViewModel(); 4 5 vm.a = aa; 6 vm.bb = bb; 7 8 var connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; 9 using (var conn = new MySqlConnection(connectionString)) 10 { 11 12 var ichiranTable = _userViewModelData.GetAllClients(Param1, Param2, Param3, conn); 13 vm.IchiranTable = ichiranTable.Select(x => new UserViewModel(x)); 14 return View(vm); 15 } 16 }
TestController
C#
1[TestClass] 2 public class LargeControllerTest 3 { 4 [TestMethod] 5 public void Index() 6 { 7 LargeController controller = new LargeController(new DBTest()); 8 9 ViewResult result = controller.Index() as ViewResult; 10 11 12 Assert.IsNotNull(result); 13 //↓IchiranTableにアクセスしたいが、上記エラーメッセージ表示。result.ModelにするとLargeViewModelが指定される 14 Assert.IsInstanceOfType(result.Model.IchiranTable, typeof(IEnumerable<UserViewModel>)); 15 16 17 var model = (result.Model as IEnumerable<UserViewModel>).ToArray(); 18 Assert.IsFalse(model[0].IsInstalled); 19 Assert.IsFalse(model[1].IsInstalled); 20 Assert.IsFalse(model[2].IsInstalled); 21 Assert.IsTrue(model[3].IsInstalled); 22 } 23 }
DBTest
C#
1public IEnumerable<UserViewModel> GetAllClients(string Param1, string Param2, string Param3, MySqlConnection conn) 2 { 3 return new UserViewModel[] 4 { 5 new UserViewModel() { UserId = 0, UserName = "あ", TestFlg = 1}, 6 new UserViewModel() { UserId = 100, UserName = "い", TestFlg = 2 }, 7 new UserViewModel() { UserId = 200, UserName = "う", TestFlg = 3 }, 8 } 9 }
LargeViewModel
C#
1public class LargeViewModel 2 { 3 4 public LargeViewModel() 5 { 6 7 } 8 public IEnumerable<SelectListItem> AList { get; set; } 9 10 public IEnumerable<SelectListItem> BList { get; set; } 11 12 public IEnumerable<SelectListItem> CList { get; set; } 13 14 public IEnumerable<UserViewModel> IchiranTable { get; set; } 15 16 public string a { get; set; } 17 18 public string b { get; set; } 19 20 public string c { get; set; } 21 }
UserViewModel
C#
1public class UserViewModel 2 { 3 public UserViewModel() 4 { 5 6 } 7 public UserViewModel(UserViewModel x) 8 { 9 UserId = x.UserId; 10 UserName = x.UserName; 11 TestFlg = x.TestFlg; 12 IsInstalled = (x.TestFlg == (int)TestType.Installed); 13 } 14 public int UserId { get; set; } 15 16 public string UserName { get; set; } 17 18 public int TestFlg { get; set; } 19 20 public bool IsInstalled { get; set; } 21 22 } 23 24 public enum TestType 25 { 26 Test = 9, 27 Test1 = 1, 28 Test2 = 2, 29 Installed = 3, 30 Test3 = 4, 31 Test4 = 0 32 }
試したこと
補足情報(FW/ツールのバージョンなど)
情報不足している場合は、仰ってください。
回答2件
あなたの回答
tips
プレビュー