Я создал веб-API и разработал для него несколько модульных тестов. В одном из моих контроллеров я передаю переменную Id, которая выполняет хранимую процедуру и возвращает список данных с совпадающими данными. Вот один из моих модульных тестов:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Web.Http.Results;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WebApi.Controllers;
using WebApi.Models;
namespace UnitTestProject1
{
[TestClass]
public class ProductContollerTests
{
// Unit Test Description: Tests to check the number of returned items with the BrandId = 1 matches the number of Products In testProducts
[TestMethod]
public void GetProducts_ShouldRetrunCorrectProducts()
{
var testProducts = GetTestProducts();
var controller = new ProductsController(testProducts);
var result = controller.GetProducts(1) as List<Product>;
Assert.AreEqual(testProducts.Count, result.Count);
}
private List<Product> GetTestProducts()
{
var testProducts = new List<Product>
{
new Product { BrandId = 1, ProductId = 1, ProductName = "Home" },
new Product { BrandId = 1, ProductId = 2, ProductName = "Motor" },
new Product { BrandId = 1, ProductId = 3, ProductName = "Travel" },
new Product { BrandId = 1, ProductId = 4, ProductName = "Van" },
new Product { BrandId = 1, ProductId = 5, ProductName = "Commercial" }
};
return testProducts;
}
}
}
Текущий это проходит, потому что я подсчитываю возвращаемые данные и сравниваю, чтобы увидеть, равно ли это данным в списке testproducts. В настоящее время это модульный тест для случая, когда идентификатор бренда равен 1. Но что произойдет, если я захочу проверить, когда идентификатор бренда равен 2.
Я могу добавить новый продукт в список testProducts, но это приводит к сбою первого теста, так как я считаю элементы в списке testProducts, поэтому при добавлении другого продукта, например
new Product { BrandId = 2, ProductId = 6, ProductName = "Creditor" }
, в testProducts больше значений, чем данных, возвращаемых из моего API. Есть ли способ, которым я мог бы добавить его, чтобы я считал только те элементы, которые имеют brandId один, чтобы я мог добавить другие тесты, или мне всегда нужно будет создавать новый список тестовых продуктов при тестировании чего-то другого.