TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 306 subscribers
Post #265 728
🧙‍♀️ Импакт от Геншина: Часть 2

Еще одна вещь, которая стала для меня важной в этой задаче и может вам будет полезной.

⏳ Когда вы проектируете времязависимую логику, то будет не лишним просовывать в эндпоинты параметр utcNow на время тестирования. То есть возможность передавать текущее время, чтобы можно было эмулироать начало недели, конец недели и разные врменные промежутки.

Я этого не сделал, и нашему тестировщику Дане пришлось пострадать с тем, чтобы постоянно лазить в базу, чтобы подправить время во всех таблицах, чтобы имитировать первый день акции и последний. Ну а мне было чуть сложнее писать автотесты, потому что приходилось писать чуть более сложные моки.

🔫 Тут с одной стороны немного страшно, что перед продом забудешь отключить возможность проставлять такой параметр и что-то упустишь. Но я думаю, что это легко решается через относительно новый класс для тестирования TimeProvider

🅰️ Кстати, рекомендую во всей времязависимой логике юзать эту штуку!

Юзается просто

public class MyService
{
private readonly TimeProvider _timeProvider;

public MyService(TimeProvider timeProvider)
{
_timeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider));
}

public DateTimeOffset GetCurrentTime()
{
return _timeProvider.GetUtcNow();
}
}


А мокается потом изично, потому что класс абстрактный. Я вот заиспользовал, и был доволен, потому, что раньше для тестов нужно было городить свои городульки, а тут на тебе – все готово! 🪢
NimblePros Blog .NET 8 Finally Gives Us A Time Abstraction - TimeProvider
  • 🔥 11
  • 👍 4
  • 🙏 2
  • 🫡 1
More from @dimasshortposts
  1. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  2. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  3. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  4. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
  5. Sep 15, 2026🔜 Готовлюсь к DOTNEXT 2026 В прошлом году за две недели до выступления я зачитывал свой д…
  6. Sep 9, 2026C# Short Posts 🔞 pinned «🐸 О чём этот канал? Кажется, я уже достаточно давно веду этот к…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →