前提・実現したいこと
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#
public ActionResult Index() { LargeViewModel vm = new LargeViewModel(); vm.a = aa; vm.bb = bb; var connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; using (var conn = new MySqlConnection(connectionString)) { var ichiranTable = _userViewModelData.GetAllClients(Param1, Param2, Param3, conn); vm.IchiranTable = ichiranTable.Select(x => new UserViewModel(x)); return View(vm); } }
TestController
C#
[TestClass] public class LargeControllerTest { [TestMethod] public void Index() { LargeController controller = new LargeController(new DBTest()); ViewResult result = controller.Index() as ViewResult; Assert.IsNotNull(result); //↓IchiranTableにアクセスしたいが、上記エラーメッセージ表示。result.ModelにするとLargeViewModelが指定される Assert.IsInstanceOfType(result.Model.IchiranTable, typeof(IEnumerable<UserViewModel>)); var model = (result.Model as IEnumerable<UserViewModel>).ToArray(); Assert.IsFalse(model[0].IsInstalled); Assert.IsFalse(model[1].IsInstalled); Assert.IsFalse(model[2].IsInstalled); Assert.IsTrue(model[3].IsInstalled); } }
DBTest
C#
public IEnumerable<UserViewModel> GetAllClients(string Param1, string Param2, string Param3, MySqlConnection conn) { return new UserViewModel[] { new UserViewModel() { UserId = 0, UserName = "あ", TestFlg = 1}, new UserViewModel() { UserId = 100, UserName = "い", TestFlg = 2 }, new UserViewModel() { UserId = 200, UserName = "う", TestFlg = 3 }, } }
LargeViewModel
C#
public class LargeViewModel { public LargeViewModel() { } public IEnumerable<SelectListItem> AList { get; set; } public IEnumerable<SelectListItem> BList { get; set; } public IEnumerable<SelectListItem> CList { get; set; } public IEnumerable<UserViewModel> IchiranTable { get; set; } public string a { get; set; } public string b { get; set; } public string c { get; set; } }
UserViewModel
C#
public class UserViewModel { public UserViewModel() { } public UserViewModel(UserViewModel x) { UserId = x.UserId; UserName = x.UserName; TestFlg = x.TestFlg; IsInstalled = (x.TestFlg == (int)TestType.Installed); } public int UserId { get; set; } public string UserName { get; set; } public int TestFlg { get; set; } public bool IsInstalled { get; set; } } public enum TestType { Test = 9, Test1 = 1, Test2 = 2, Installed = 3, Test3 = 4, Test4 = 0 }
試したこと
補足情報(FW/ツールのバージョンなど)
情報不足している場合は、仰ってください。
まだ回答がついていません
会員登録して回答してみよう