Вслед за «догадкой» по некоторым причинам вы настраиваете синглтон для смоделированного экземпляра IUserResolverService, но, как написано, вы уникальным образом создаете и возвращаете этот смоделированный объект с помощью делегата, а не просто создаете один экземпляр завершенного макета и его регистрация вместо этого, как вы со всеми остальными. Учитывая сочетание синхронных и асинхронных операций, похоже, что ваш тест заставляет Moq бороться с жизненным циклом / созданием объекта.
Если мы изменим это:
services.AddSingleton(a =>
{
var mock = new Mock<IUserResolverService>();
mock.Setup(b => b.GetUser()).Returns(5);
return mock.Object;
});
На это :
var mock = new Mock<IResolverService();
mock.Setup(b => b.GetUser()).Returns(5);
services.AddSingleton(mock.Object);
Вместо этого вы передаете фактический единственный экземпляр макета, который может решить все, что вызывает проблему, будь то жизненный цикл или позднее связывание (или что-то еще, но эй).