как мне убедиться, что остальная часть асинхронного метода (после ожидания) запущена в другом потоке?
Сначала убедитесь, что вы вызываете тестируемый метод из контекста пула потоков. Некоторые инфраструктуры модульных тестов предоставляют однопоточный контекст. Если это так, то вы захотите обернуть свой тестовый код в await Task.Run(() => ...)
.
Затем смоделируйте ожидаемый метод и убедитесь, что он выполняет await Task.Yield()
; это гарантирует, что await
в тестируемом методе получит незавершенную задачу, что приведет к его возобновлению в потоке пула потоков.
Если вы хотите быть абсолютно уверенным в том, что он возобновляется в другом потоке пула потоков, вам необходимо заблокировать метод модульного тестирования для тестируемого метода, чтобы текущий поток пула потоков заблокирован и не используется для возобновления тестируемого метода.