测试列表结果
Testing Lists Results
我正在使用 NLog 和 NSubstitute 创建单元测试。
我在 API 控制器中有这个方法:
public GenericListItems<CalendarYearItem> GetYears(int startingYear = 0, int rangeYears = 50, int startIndex = 0, int itemCount = 4)
{
if (startingYear == 0)
{
startingYear = DateTime.Now.Year;
}
List<CalendarYearItem> years = Enumerable.Range(startingYear, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
if (years != null)
{
int firstIndex = 0;
int totalCount = years.Count;
years = PaginateList(years, startIndex, itemCount, totalCount, firstIndex);
return new GenericListItems<CalendarYearItem>(years, firstIndex, totalCount);
}
return new GenericListItems<CalendarYearItem>();
}
还有这个界面:
/// <summary>
/// Get Years
/// </summary>
/// <returns>List Months</returns>
GenericListItems<CalendarYearItem> GetYears(int startingYear, int rangeYears, int startIndex = 0, int itemCount = 4);
如果return 总计数为 50,我需要在调用此方法时进行测试;
如果起始年份为 0,则验证第一个位置是否为 2018 年;
[Test]
[TestCase(0, 50)]
public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
{
GenericListItems<CalendarYearItem> calendar = new GenericListItems<CalendarYearItem>();
_substitute.GetYears(startingYear, rangeYears);
Assert.That(calendar.TotalCount, Is.EqualTo(50));
//var result = _substitute.GetFullDate(year, month, day).Returns(calendar);
//Assert.AreEqual(calendar, result);
}
Instead Assert 我需要使用 Collections Assert?
但是当创建安排时我必须复制我的 linq 查询来创建?
Nunit 支持集合断言。但是,您的问题对我来说并不清楚。你究竟想测试什么?
如果你想测试你的实现 returns 50 个元素,你不应该使用模拟,而应该使用你的实现的对象,否则你正在为 nsubstitute 编写测试。如果您正在尝试测试列表生成器的实现,我期待这样的测试。
[Test]
[TestCase(0, 50)]
public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
{
var sut = new InstanceOfYourCalculator();
GenericListItems<CalendarYearItem> calendar = sut.GetYears(startingYear, rangeYears);
Assert.That(calendar, Has.Count.EqualTo(rangeYears));
var expectedResult = Enumerable.Range(DateTime.Now.Year, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
CollectionAssert.AreEqual(expectedResult, calendar);
}
您说您正在使用 NSubtsitute,在我看来,您正在创建一个 returns 空列表的模拟。最重要的是,您没有在测试中使用您的模拟,您只是在初始化它。如果您不清楚,请查看 nsubstitute 的教程。
http://nsubstitute.github.io/help/getting-started/
我正在使用 NLog 和 NSubstitute 创建单元测试。
我在 API 控制器中有这个方法:
public GenericListItems<CalendarYearItem> GetYears(int startingYear = 0, int rangeYears = 50, int startIndex = 0, int itemCount = 4)
{
if (startingYear == 0)
{
startingYear = DateTime.Now.Year;
}
List<CalendarYearItem> years = Enumerable.Range(startingYear, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
if (years != null)
{
int firstIndex = 0;
int totalCount = years.Count;
years = PaginateList(years, startIndex, itemCount, totalCount, firstIndex);
return new GenericListItems<CalendarYearItem>(years, firstIndex, totalCount);
}
return new GenericListItems<CalendarYearItem>();
}
还有这个界面:
/// <summary>
/// Get Years
/// </summary>
/// <returns>List Months</returns>
GenericListItems<CalendarYearItem> GetYears(int startingYear, int rangeYears, int startIndex = 0, int itemCount = 4);
如果return 总计数为 50,我需要在调用此方法时进行测试; 如果起始年份为 0,则验证第一个位置是否为 2018 年;
[Test]
[TestCase(0, 50)]
public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
{
GenericListItems<CalendarYearItem> calendar = new GenericListItems<CalendarYearItem>();
_substitute.GetYears(startingYear, rangeYears);
Assert.That(calendar.TotalCount, Is.EqualTo(50));
//var result = _substitute.GetFullDate(year, month, day).Returns(calendar);
//Assert.AreEqual(calendar, result);
}
Instead Assert 我需要使用 Collections Assert? 但是当创建安排时我必须复制我的 linq 查询来创建?
Nunit 支持集合断言。但是,您的问题对我来说并不清楚。你究竟想测试什么?
如果你想测试你的实现 returns 50 个元素,你不应该使用模拟,而应该使用你的实现的对象,否则你正在为 nsubstitute 编写测试。如果您正在尝试测试列表生成器的实现,我期待这样的测试。
[Test]
[TestCase(0, 50)]
public void GetYears_GetCalendarListYearWithEmptyYear_ReturnCalendarListYearsStartingCurrentYear(int startingYear, int rangeYears)
{
var sut = new InstanceOfYourCalculator();
GenericListItems<CalendarYearItem> calendar = sut.GetYears(startingYear, rangeYears);
Assert.That(calendar, Has.Count.EqualTo(rangeYears));
var expectedResult = Enumerable.Range(DateTime.Now.Year, rangeYears).Select(x => new CalendarYearItem(x++)).ToList();
CollectionAssert.AreEqual(expectedResult, calendar);
}
您说您正在使用 NSubtsitute,在我看来,您正在创建一个 returns 空列表的模拟。最重要的是,您没有在测试中使用您的模拟,您只是在初始化它。如果您不清楚,请查看 nsubstitute 的教程。 http://nsubstitute.github.io/help/getting-started/