Заголовок является лишь частью ошибки, вот одна из многих ошибок:
«Список» не содержит определения для «ChoiceId», и метод расширения «ChoiceId», принимающий первый аргумент типа «Список», не найден (отсутствует директива using или ссылка на сборку?)
Я пытаюсь протестировать список RepaymentPlan, как указано ниже. Но я не могу выбрать остальные значения в этом списке, так как я получаю красную ошибку подчеркивания ниже этих ключей (я завернул эти ключи с ** ** в модульном тесте ниже. Что-то не так, я делаю, и не знаю, как это сделать решить это.
Все еще учусь и новичок в программировании, так что, надеюсь, вы, ребята, поможете мне правильно. Очень ценю вашу помощь.
Вот что у меня есть:
Модели:
using System.Collections.Generic;
namespace Project.Models
{
public class Repayment
{
public int Amount { get; set; }
public string DueDate { get; set; }
public string RepaymentId { get; set; }
}
public class Choice
{
public string ChoiceId { get; set; }
public List<Repayment> Repayments{ get; set; }
}
public class RepaymentPlan
{
public List<Choice> Choices{ get; set; }
}
}
Хранилища:
using System.Collections.Generic;
using System.Linq;
using Project.Models;
using System.Net;
using System.Collections.Specialized;
using System.Text;
namespace Project.Repositories
{
public class OrderRepository
{
private static List<RepaymentPlan> _RepaymentPlan;
static OrderRepository()
{
_RepaymentPlan = new List<RepaymentPlan>();
_RepaymentPlan.Add(new RepaymentPlan
{
Choices = new List<Choice>
{
new Choice
{
ChoiceId = "cho1",
Repayments = new List<Repayment>
{
new Repayment
{
Amount = 200,
DueDate = "2018-06-01"
},
new Repayment
{
Amount = 100,
DueDate = "2018-08-01",
}
}
},
new Choice
{
ChoiceId = "cho2",
Repayments = new List<Repayment>
{
new Repayment
{
RepaymentId = "Choice1",
Amount = 300,
DueDate = "2018-10-01"
},
new Repayment
{
RepaymentId = "Choice2",
Amount = 150,
DueDate = "2018-11-01"
},
}
}
},
});
}
* Юнит тест *
[Test]
public void ListRepaymentPlan()
{
// Arrange
var controller = new CaseController();
var expectedResult = new List<RepaymentPlan>();
var repaymentPlan = new RepaymentPlan()
{
Choices = new List<Choice>
{
new Choice
{
ChoiceId = "cho1",
Repayments = new List<Repayment>
{
new Repayment
{
Amount = 200,
DueDate = "2018-06-01"
},
new Repayment
{
Amount = 100,
DueDate = "2018-08-01"
},
}
},
new Choice
{
ChoiceId = "cho2",
Repayments = new List<Repayment>
{
new Repayment
{
RepaymentId = "Choice1",
Amount = 300,
DueDate = "2018-10-01"
},
new Repayment
{
RepaymentId = "Choice2",
Amount = 150,
DueDate = "2018-11-01"
},
}
}
},
};
expectedResult.Add(RepaymentPlan );
// Act
var actionResult = controller.FindRepaymentPlan("578", "156");
var result = (List<RepaymentPlan >)actionResult;
// Assert
for (var i = 0; i < result.Count; i++)
{
Assert.AreEqual(expectedResult[i].Choices , result[i].Choices);
Assert.AreEqual(expectedResult[i].Choices.**ChoiceId**, result[i].Choices.**ChoiceId**);
Assert.AreEqual(expectedResult[i].Choices.**ChoiceId**.Repayments, result[i].Choices.**ChoiceId**.Repayments);
Assert.AreEqual(expectedResult[i].Choices.**Repayments**.Amount, result[i].Choices.**Repayments**.Amount);
Assert.AreEqual(expectedResult[i].Choices.**Repayments**.DueDate, result[i].Choices.**Repayments**.DueDate);
}
}
** Обновлен юнит тест **
// Assert
for (var i = 0; i < result.Count; i++)
{
CollectionAssert.AreEqual(expectedResult[i].Choices, result[i].Choices);
CollectionAssert.AreEqual(expectedResult[i].Choices[0].ChoiceId, result[i].Choices[0].ChoiceId);
CollectionAssert.AreEqual(expectedResult[i].Choices[0].Repayments, result[i].Choices[0].Repayments);
CollectionAssert.AreEqual(expectedResult[i].Choices, result[i].Choices);
CollectionAssert.AreEqual(expectedResult[i].Choices[1].ChoiceId, result[i].Choices[1].ChoiceId);
CollectionAssert.AreEqual(expectedResult[i].Choices[1].Repayments, result[i].Choices[1].Repayments);
}