我目前正在尝试使用Flutter和Dart进行测试驱动的开发。 我有一个对象,其中有两种方法,第一种方法执行http调用,第二个方法调用第一个方法。 为了测试第一个函数,我模拟了该函数的依赖项(即http调用)。
现在我想测试第二个方法,但我无法找到一种只模拟第一个函数而保留其余对象完整性的方法。结果是,我只能再次模拟第一个方法的依赖项,这导致整个函数被重新执行。这违反了单元测试的全部目的。
似乎在模拟对象时只有全盘接受或者不接受的方式。我想知道如何处理某些对象依赖于同一对象上的方法的情况。
使用Fake
和Mock
不能让我调用原始方法。spy
已过时,将模拟函数分配给其中一个函数也无法工作,因为Dart不允许我重新分配方法。
HttpOverrides
来模拟HttpClient
?this.firstMethod()
,它与对象绑定并在调用第一个方法时自动调用。替换调用只能通过 DI 传递一个新的this
来实现。或者我有什么遗漏吗?虽然 HttpOverrides 在一般情况下很有用,但我不知道它如何帮助我减轻再次执行第一个方法的代码。我想坚持“一个函数一个测试”的原则。 - jns_ai_unr