public void シナリオ1() { // Moqインスタンスの生成 var weatherMock = new Mock <IWeatherRepository>(); // Moqのセットアップ weatherMock.Setup(x => x.GetLatest(1)).Returns( //完全コンストラクターなので値を入れる new WeatherEntity( 1, Convert.ToDateTime("2019/09/10 23:00:56"), 2, 12.3f)); // Moqのセットアップ weatherMock.Setup(x => x.GetLatest(2)).Returns( //完全コンストラクターなので値を入れる new WeatherEntity( 2, Convert.ToDateTime("2019/09/13 23:00:27"), 1, 22.12f)); // Moqインスタンスの生成 var areasMock = new Mock <IAreasRepository>(); // Moq用のList作成 var areas = new List <AreaEntity>(); areas.Add(new AreaEntity(1, "東京")); areas.Add(new AreaEntity(2, "大阪")); areas.Add(new AreaEntity(3, "福岡")); // Moqのセットアップ areasMock.Setup(x => x.GetData()).Returns(areas); // ViewModelに対してテストを行う var viewModel = new WeathrLatestViewModel(weatherMock.Object, areasMock.Object); // 初期値のテスト Assert.IsNull(viewModel.SelectedAreaId); Assert.AreEqual("", viewModel.DataDateText); Assert.AreEqual("", viewModel.ConditionText); Assert.AreEqual("", viewModel.TemperatureText); // Areasの件数をテスト Assert.AreEqual(3, viewModel.Areas.Count); Assert.AreEqual(1, viewModel.Areas[0].AreaId); Assert.AreEqual("東京", viewModel.Areas[0].AreaName); Assert.AreEqual(2, viewModel.Areas[1].AreaId); Assert.AreEqual("大阪", viewModel.Areas[1].AreaName); viewModel.SelectedAreaId = 1; viewModel.Search(); Assert.AreEqual(1, viewModel.SelectedAreaId); Assert.AreEqual("2019/09/10 23:00:56", viewModel.DataDateText); Assert.AreEqual("曇り", viewModel.ConditionText); Assert.AreEqual("12.30 ℃", viewModel.TemperatureText); viewModel.SelectedAreaId = 2; viewModel.Search(); Assert.AreEqual(2, viewModel.SelectedAreaId); Assert.AreEqual("2019/09/13 23:00:27", viewModel.DataDateText); Assert.AreEqual("晴れ", viewModel.ConditionText); Assert.AreEqual("22.12 ℃", viewModel.TemperatureText); viewModel.SelectedAreaId = 3; viewModel.Search(); Assert.AreEqual(3, viewModel.SelectedAreaId); Assert.AreEqual("", viewModel.DataDateText); Assert.AreEqual("", viewModel.ConditionText); Assert.AreEqual("", viewModel.TemperatureText); }
/// <summary> /// ボタン処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LatestButton_Click(object sender, EventArgs e) { // 通常は引数に与えなければならないが、DataBindしているので引数はいらない _viewModel.Search(); }