Подготовка данных для юнит-теста - C # - PullRequest
0 голосов
/ 18 февраля 2019

Я пишу юнит-тест / компонентный тест с использованием Entity Framework Core InMemory Provider.

Когда я пишу юнит-тест, я сталкивался со следующим вопросом.

У меня есть два следующих BLМетоды / DL.

  1. ToCreate
  2. ToGet

Поэтому, когда я пишу модульный тест, мне нужно создать некоторые данные для примерамодульный тест.

Когда я пишу модульный тест для метода ToGet, могу ли я использовать ToCreate (метод BL) для создания образцов данных или Когда я пишу модульный тест для ToCreate, могу ли яиспользовать ToGet метод для проверки созданных данных?Это правильный выбор?

Для создания модульного теста использовалось следующее: https://www.youtube.com/watch?v=ddrR440JtiA

1 Ответ

0 голосов
/ 19 февраля 2019

Вы не должны проверять, что ToCreate сохраняют данные, используя ToGet или ToGet, создавая данные через ToCreate.Причина в том, что ваш UT не изолирован и вы не проверяете одно поведение.Также ваш UT может пройти в тех случаях, когда он не должен.

Что вы должны сделать: Для каждого из методов создайте тестовые наборы, затем для каждого тестового набора создайте UT и, если есть взаимодействие сконтекст БД проверяет, что взаимодействие произошло правильно.

Например, успешно сохранится один объект:

[Fact]
public void ToCreate_Persist_One_Oblect(){
   //arrange:
   var sut = new Repository(context);

   //act
   sut.ToCreate(new XYzClass(){
       ... some properties
   });

   //assert:
   var newlyCreatedXyz = context.XYZ.FirstOfDefualt(/*get the item*/);
   Assert.NotNull(newlyCreatedXyz);
   /*Then asset the properties*/
}

Если вы собираетесь использовать фальшивый фреймворк вместо БД в памяти, тогдаВы можете высмеять DbContext и проверить взаимодействие.

...