Flutter-geolocator: 真的很讨厌静态方法...

创建于 2021-04-28  ·  3评论  ·  资料来源: Baseflow/flutter-geolocator

我可以实例化地理定位器的插件的先前版本很好,我的单元测试对此非常满意,因为可以模拟地理定位器。

现在一切都是静态的......有没有不涉及静态方法的新方法?

最有用的评论

由于您提到的特定原因,该链接还建议为第三方依赖项创建包装器/适配器/垫片并模拟它们。 这样你就只能模拟你拥有的代码(因为你是包装器/适配器/垫片的所有者)。

这有以下好处:

  • 抽象了第 3 方 API,使其在必要时更易于替换;
  • 将 API 的表面缩小到只包含应用程序需要的部分,使 API 更易于使用,并且可以从应用程序的其余部分中理解;
  • 当第 3 方 API 更改时,不会破坏您的所有测试。

我将关闭此问题,但请随时继续讨论;)

所有3条评论

@jaumard我承认这可能不是我做出的最佳选择。 然而,在我的辩护中,关于测试和应用程序架构的常见做法通常表明你不应该嘲笑你不拥有的东西(更多阅读在这里)。

我的建议是围绕地理定位器编写一个包装器并模拟包装器。

您的链接更多的是关于 TDD,而不是一般的单元测试。 另外,如果我们不模拟它,我想测试不会通过,因为在运行测试时没有实现。

我还想检查我的代码中是否调用了地理位置,并检查我对结果所做的操作是否正确。 您想模拟第三方部门的原因有很多:)

也不要使用网络模拟 deps 并在没有网络的情况下运行您的测试,这会很有趣:D 甚至使用真正的显示网络并获得 1 小时来执行您的测试哈哈

但是,是的,我会在地理定位器周围做我自己的包装,只是想知道在做之前是否内置了一些东西。

由于您提到的特定原因,该链接还建议为第三方依赖项创建包装器/适配器/垫片并模拟它们。 这样你就只能模拟你拥有的代码(因为你是包装器/适配器/垫片的所有者)。

这有以下好处:

  • 抽象了第 3 方 API,使其在必要时更易于替换;
  • 将 API 的表面缩小到只包含应用程序需要的部分,使 API 更易于使用,并且可以从应用程序的其余部分中理解;
  • 当第 3 方 API 更改时,不会破坏您的所有测试。

我将关闭此问题,但请随时继续讨论;)

此页面是否有帮助?
0 / 5 - 0 等级