XUnit, как подделать приватный метод, который возвращает данные (Not Testing Private Method) - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть приложение do tnet 3.1 core web api и я хочу использовать xUnit. В данном случае я хочу протестировать только методы publi c, НО у меня есть несколько частных методов, которые либо обращаются к базе данных, чтобы вернуть данные, либо совершают остальной вызов внешней службе.

Вопрос:
Я НЕ пытаюсь проверить закрытый метод, но как я могу подделать возвращаемые данные приватных методов, чтобы при вызове моего метода publi c приватный метод, я могу вернуть поддельный набор данных, чтобы мой метод publi c и вычисления могли быть проверены?

Заранее спасибо!

Обновление Здесь это пример того, что я пытаюсь сделать.

public class FooRepository{
   public MyObject CalculateValues{
      var myReturnObject = new MyObject();
      var crewSalaries = GetCrewSalaries(myCrew)

      myObject.TotalSalary = crewSalaries.Sum(x=>x.salary)
      // Insert other calculations here
   }
   private MyObject GetCrewSalaries(List<Crew> myCrew){
      return dbContext.Where(x=>x.id == myCrew.id).ToList();
   }
}

Public Class FooRepositoryTest{
 [Fact]
 public Test1()
 {
   var fooClass = new fooClass();
   // mock or hijack fooClass.GetCrewSalaries, so that I can return fake data
   var result = fooClass.CalculateValues();

   // assert statement here
 }

 private GetFakeSalaryData()
 {
  return new List<CrewSalaries>{
     [
       id:1,
       salary:23
     ],
     [
       id:2,
       salary:23.1
     ],
  }
 }
}
...