В нашем старом синхронном приложении в нашем базовом классе было следующее:
public virtual bool ShouldSomethingHappen() => false;
Итак, идея заключается в том, что в производном классе можно сделать вызов в БД, чтобы определить, что-тодолжно произойти.
Итак, при переходе к ожидаемому коду мы сначала попробовали следующее в базовом классе:
public virtual async Task<bool> ShouldSomethingHappen()
{
await Task.Yield();
return false;
}
Казалось, что это работает нормально при запуске приложения, но это сломало нашинтеграционные тесты (где у нас много ожидаемых звонков) .... мы не могли понять, почему.
Но, изменив это на следующее, мы решили проблему:
public virtual async Task<bool> ShouldSomethingHappen() => Task.FromResult(false);
ТехническиВ чем разница между двумя подходами?