Я работаю над автоматизацией приемочного / сквозного тестирования для новой функции, в которой две разные роли имеют перекрывающиеся возможности, и я изо всех сил стараюсь разработать тест, который четко читается и имеет ограниченные ненужные повторы как в письменной, так и в письменной форме. выполнения.
Допустим, у этой функции есть сценарии a, b, c, d, e, f, g, и у нас есть role1 и role2.
роль 1 может сделать а, б, е, е, ж
роль 2 может делать с, д, е, е, г
Я изначально разработал спецификацию следующим образом
shared example "e"
scenarios
shared example "f"
scenarios
shared example "g"
scenarios
context "as role1"
it_behaves_like "e"
it_behaves_like "f"
it_behaves_like "g"
scenario "a"
scenario "b"
context "as role2
it_behaves_like "e"
it_behaves_like "f"
it_behaves_like "g"
scenarios for "c"
scenarios for "d"
Проблема, с которой я сталкиваюсь, состоит в том, что общие примеры запускаются дважды, когда на самом деле нет различий в поведении для роли 1 или роли 2 для этих примеров.
В качестве альтернативы я мог бы удалить общие примеры и просто запустить их сценарии из контекста одной из ролей, но с точки зрения читабельности это может показаться, что для этой функции требуется эта роль.
Есть ли у кого-нибудь предложения по поводу того, что здесь можно считать «лучшей практикой»?