我是新的行爲驅動開發,我無法找到任何與當前問題類似的示例或指導原則。如何使用BDD來編寫複雜的數據結構/數據層
我目前的項目涉及到一個龐大的三維網格,每個離散單元中有任意數量的槽。存儲在這些槽中的實體具有它們自己的槽,因此可以存在任意的實體嵌套。所使用的對象的最終實現需要某種持久數據存儲的支持,這會使API變得複雜一些(即,使用加載/存儲而不是get/set之類的詞,並確保修改返回的項目不會修改數據存儲本身中的相應項目)。不用擔心,我的第一個實現將僅存在於內存中,但API是我應該定義的行爲,因此實際實現現在無關緊要。
我堅持的事情是,BDD的文獻集中在物體之間的相互作用以及模擬物體如何能夠幫助它。這似乎並不適用於此。我的抽象數據存儲的唯一真正的「行爲」涉及從編程語言本身所代表的實體以外的實體加載和存儲數據;我無法定義或測試這些行爲,因爲它們是依賴於實現的。
那麼我可以定義/測試什麼?自然的選擇是國家。存儲東西。確保它加載。修改我加載的東西,並確保我重新加載它沒有修改。等等,但我的印象是,這是新BDD開發人員常見的陷阱,所以我想知道是否有更好的方法可以避免它。
如果我確實採取了狀態測試路線,還會出現其他一些問題。很明顯,我可以先測試一個空的網格,然後在一個位置測試一個空實體,但接下來呢?兩個實體位於不同的位置?兩個實體位於同一位置?嵌套實體?我應該測試嵌套多深?我是否測試這些非排他性案例的笛卡爾乘積,即兩個實體位於同一位置並且每個實體都是嵌套實體?名單一直持續下去,我不知道該停在哪裏。