Использование объекта IQueryable с теорией xUnit - PullRequest
0 голосов
/ 18 января 2019

У меня есть программа, которая запускает вычисления из базы данных SqlServer. Я хочу проверить, что эти вычисления сделаны правильно. В настоящее время единственный способ, которым я могу это сделать, - это использовать ответные числа с теорией и убедиться, что функция дает ответ int для соответствующей строки базы данных.

Это неоптимально, потому что у меня есть два целых числа для каждого теста, ответ и индекс строки, которую я хочу проверить.

[Theory]
[InlineData(db.movieTable.Take(1).Select(p => p))]
public void Test1(IQueryable<movieTable> value)
{
    var result = db.movieTable.Take(1).Select(p => p).ToList().ElementAt(0).Price;
    Assert.True(value.ToList().ElementAt(0).Price == 10);
}

Есть ли способ сделать это. Если я запускаю этот код, я получаю следующую ошибку: UnitTest1.cs(19,21): error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type [C:\Users\co-op7\Documents\GeorgeCode\MovieSite\MovieManage.Tests\MovieManage.Tests.csproj]

1 Ответ

0 голосов
/ 18 января 2019

Обычно цель InlineData - использовать ту же логику тестирования, но изолировать различия в ожидаемых входах и выходах.

[Theory]
[InlineData(1, 10.00m)]
[InlineData(2, 14.50m)]
public void Test1(int movieId, decimal expectedPrice)
{
    var result = db.movieTable.Single(p => p.Id == movieId);
    Assert.True(result.Price == expectedPrice);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...