我一直在使用TDD/SSR。我試圖轉換到BDD:上下文,因爲,和斷言。BDD:何時/在哪裏設置存根?
我正在使用Rhino Mocks來隔離,現在我正忙於語法。這裏就是我這麼遠(注:ContextSpecification class source):
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屬性將返回的值?我現在正在使用我的BecauseOf方法,但是我應該在我的Context方法中執行此操作嗎?
我可以詳細說明我對這個BDD類(場景vs行爲等)中Context和BecauseOf *是什麼的理解,如果這有助於潛在的回答者,但我試圖讓問題保持簡短。 – lance 2010-09-27 17:13:13
我想將存根設置放在我的BecauseOf中,這樣我就可以根據每個場景更改它們,而不必每次都有一個新的上下文基類,但是這是壞的,我在想。實際上,我必須爲每個我測試SUT的場景定義一個獨特的上下文。如果*這些上下文類都是從一個基類擴展而來的,那麼很好,但是我必須爲每個測試SUT的場景設置一個獨特的上下文類。我現在在想嗎? – lance 2010-09-27 17:41:20