BDD: когда / где настраивать заглушки? - PullRequest
0 голосов
/ 27 сентября 2010

Я уже некоторое время использую TDD / SSR . Я пытаюсь перейти на BDD: контекст, потому что и утверждает.

Я использую Rhino Mocks для изоляции и сейчас борюсь с синтаксисом. Вот что у меня есть (примечание: Источник класса ContextSpecification ):

public static class DocumentIdAdapterTests {
    public class DocumentIdAdapterContext : ContextSpecification {
        protected IDocumentIdAdapter _documentIdAdapter;
        protected ISettings _settingsMock;
        protected override void Context() {
            _settingsMock = MockRepository.GenerateMock<ISettings>();
            _documentIdAdapter = new DocumentIdAdapter(_settingsMock);
        }
    }

    [TestClass]
    public class when_single_document_url_is_created : DocumentIdAdapterContext {
        protected override void BecauseOf() {
            _settingsMock.Stub(x => x.DocumentServiceBaseUrl).Return("fooOutput");
            _documentIdAdapter.GetDocumentServiceSingleDocumentUrl("fooInput");
        }

        [TestMethod]
        public void the_settings_should_provide_the_document_service_base_url() {
            _settingsMock.AssertWasCalled(x => { var ignored = x.DocumentServiceBaseUrl; });
        }
    }
}

Где я должен установить свои заглушки? Например, где я должен заглушить значение, которое будет возвращать свойство DocumentServiceBaseUrl? Я делаю это в моем методе Потому что сейчас, но я должен делать это в моем методе контекста?

1 Ответ

0 голосов
/ 28 сентября 2010

Это зависит от того, какие контексты влияют на поведение вашего класса, а какие просто необходимы для работы вашего класса.

Если вы всегда начинаете с определенных контекстов (например, служба документов всегда находится по определенному URL-адресу), вы можете установить это в конструкторе или в методе установки.

Если у вас есть контексты, которые влияют на ваше поведение (то, что вы называете Потому что), то каждый контекст будет нуждаться в новом сценарии. Это обычно то, что движет сценариями - комбинации контекстов, дающие разные результаты (Утверждения).

Хороший трюк с BDD - искать разные контексты. Подумайте: «Должен ли мой код всегда вести себя так? Есть ли контекст, который дает другой результат?» Это дает вам хорошее начало разговора для обнаружения всего, что вы не знаете о своем коде, и позволяет вам предоставлять примеры (модульные тесты) для каждого нового аспекта поведения.

...