Хорошо, поэтому я схожу с ума здесь. Я использовал DbSet.Where 1000 раз и по какой-то причине он не работает в этом конкретном тесте xunit. Кажется, проблема связана с моим утверждением where, пытающимся получить список recipeid's = 1, чтобы я мог их удалить. Когда я останавливаю экод и смотрю на своих местных жителей, параметры устанавливаются в 1, где они обозначены, но там, где их не будет.
Я немного консолидировал код, чтобы сделать его более читабельным, но он все еще не работает как есть. Какого черта я пропускаю?
[Fact]
public void DeleteIngredientListWithId_ReturnsProperCount()
{
//Arrange
var dbOptions = new DbContextOptionsBuilder<IngredientDbContext>()
.UseInMemoryDatabase(databaseName: $"IngredientDb{Guid.NewGuid()}")
.Options;
var sieveOptions = Options.Create(new SieveOptions());
var fakeIngredientOne = new Ingredient { RecipeId = 1 };
var fakeIngredientTwo = new Ingredient { RecipeId = 1 };
var fakeIngredientThree = new Ingredient { RecipeId = 2 };
//Act
using (var context = new IngredientDbContext(dbOptions))
{
context.Ingredients.AddRange(fakeIngredientOne, fakeIngredientTwo, fakeIngredientThree);
var service = new IngredientRepository(context, new SieveProcessor(sieveOptions));
var ingredients = context.Ingredients.Where(i => i.RecipeId == 1).ToList();
context.Ingredients.RemoveRange(ingredients);
context.SaveChanges();
//Assert
var ingredientList = context.Ingredients.ToList();
ingredientList.Should().ContainEquivalentOf(fakeIngredientThree);
ingredientList.Should().HaveCount(1);
context.Database.EnsureDeleted();
}
}