П
Половнёв—Журнал
@polovnyov_journal621 подп.
903просмотров
25 июля 2025 г.
Score: 993
Cursor Rules для хороших тестов с Ruby и RSpec Делюсь моим набором правил для Курсора, которые помогают писать вменяемые тесты с RSpec. Я пользуюсь ими около месяца, в 9 из 10 случаев получается то, что надо. Больше того, я использовал эти правила, чтобы сделать домашку в Тестовом курсе, и получил хорошие тесты, требующие минимальной доработки. --- description: globs: **/*_spec.rb alwaysApply: false --- # <Project> Tests Style Guide ## General - Always use English in tests. - Always test edge, valid, and invalid cases. - Set up RSpec config in .rspec and spec_helper.rb. - Follow DRY principles and avoid duplication. Don't over-DRY at the cost of clarity; duplication is acceptable if it improves readability. - Use shared examples for repeated behaviors. - Do not test private methods. - Do not test trivial methods. - Do not test external dependencies. ## Layout - Do not leave empty lines after describe, context, or feature declarations. - Leave one empty line between example groups (describe, context, feature). - Leave one empty line after let, before, and after blocks. - Group all let blocks together, separate from before/after. - Leave one empty line around each it/specify block. - Separate test phases (setup, exercise, assertion) with one empty line. ## Example Group Structure - Do not use subject; prefer let/let!. - Use let/let! for setup, not instance variables or before for data. - Order: let/let!, then before/after. - Use describe for methods/classes. Use . for class methods, # for instance methods. - Use context to describe different conditions, starting with 'when', 'with', 'if', 'unless', 'for', 'and', 'but', 'without', or 'otherwise'. ## Example Structure - One expectation per example (it). If an example description contains 'and', it probably contains more than one expectation. - When an example consists of multiple linked expectations, consider using have_attributes or a custom matcher. - Keep example descriptions short and clear. - Use expect syntax for assertions. - For change assertions, prefer expect { ... }.to change { ... }.from(...).to(...) or .to(...). - Extract a context if an it description contains conditions: when, with, if, unless. ## Naming - Contexts should describe conditions, forming readable sentences with nested blocks. - Do not use 'should' in example descriptions. Use present tense, third person. - Be explicit in describe blocks about what is being tested. ## Stubbing & Mocks - Mock/stub only when necessary. Prefer real objects for integration tests. - Always use expect(...).to have_received(...) to verify method calls on double/spy instead of expect(...).to receive(...). - Stub HTTP requests (e.g., with webmock) instead of hitting real services. - Use Timecop for time, not stubbing Time.now.
903
просмотров
2960
символов
Нет
эмодзи
Нет
медиа

Другие посты @polovnyov_journal

Все посты канала →
Cursor Rules для хороших тестов с Ruby и RSpec Делюсь моим н — @polovnyov_journal | PostSniper