我必须找到并解决一个包含循环依赖的问题,其中我要么在所涉及的对象之间存储不透明的指针,要么在更高层次上使用单独的类来实现对象之间的关系。
所以我想出了一个简单的问题,我有两个班级,银行和帐户应该这样做。银行包含一个包含帐户的列表,该帐户包含指向其银行的指针。实现了循环依赖。
但还有另一个条件我必须要满足的是,我必须确保它们之间的类和关系可以独立于彼此进行测试。
银行类使用对账户有效的功能,例如在它们之间转移资金,提取或增加资金。该帐户包含编辑其变量的类似功能。
测试帐户类很容易实例化类并测试函数但是如何测试依赖于独立于依赖的另一个类的类? 你如何测试两个类之间的关系?
我很难找到有关循环依赖的信息,除了你应该避免它们,但在较大的项目中,它们很难避免。
答案 0 :(得分:0)
重要的问题是为什么账户需要知道哪家银行拥有它?很难想象一个需要这些信息的账户操作作为涉及银行的操作不会做得更好。例如,将资金从一个账户转移到另一个账户通常会让A银行从账户AA中取出资金,然后将其交给B银行,然后再添加到账户BB中。
也许你需要删除依赖关系,然后找出什么是“不可能的”'没有它,并重新考虑你想要做什么,或许可以用银行用账户做某事而不是账户做某事来银行。
答案 1 :(得分:0)
考虑编写一个简化的帐户版本
e.g。
class Account
{
public:
bool failDebit;
bool Debit(unsigned int quid) { return failDebit;}
}
然后,您可以先针对这两种情况设置Bank
来测试failDebit
课程。然后,如果您在Bank
中使用更复杂的函数,使用更多的Account
并使用类似方法测试Bank
类的所有可能性,则可以使其更复杂。 Account
类可以非常简单,只是模仿返回值。
NB 这有点简单,因为可能需要考虑各种函数调用之间的依赖关系(没有双关语)。