3

我们有一堆单元测试来测试很多网页和 REST API 服务。

目前,当我们的测试运行时,它会从这些页面中实时提取,但这有时可能需要很长时间才能运行,而且感觉测试应该测试更多我们的代码 - 而不仅仅是依赖它们启动和响应(如果这有意义的话。 .)。

保存有效的 api 响应并在设置期间通过单元测试加载它是更好的做法吗?

想法?

4

3 回答 3

4

听起来您一次尝试测试太多是的。

您应该测试生成 Rest API 响应的代码(如果此代码在您的控制之下)以及完全分开使用它的代码。如果您不控制生成 API 的代码,您应该使用假的、有效的 API 答案为使用它的代码提供代码,并将它们用于您的测试。

依靠页面启动和响应听起来更像是集成测试。但是,如果您依赖外部 API,那么进行集成测试以验证 API 是否仍按您预期的方式运行总是很有趣。

于 2010-05-05T11:05:05.107 回答
0

我宁愿使用测试/模拟数据源而不是实际的实时数据源。这将让您在不实际使用网络资源的情况下读取数据,并提供更好的性能(取决于您的架构,切换您使用的数据源可能会或可能不会容易)。

但同样重要的是,它可以让您处理返回的数据,并让您测试边缘情况、无效数据响应等。根据您的应用程序对数据的处理方式,这可能很重要。

于 2010-05-05T11:04:38.383 回答
0

我处理这个问题的方法是使用模拟。让我们假设您有一个负责调用外部服务的类,以及一个使用这些结果的单独类。您可以创建一个调用服务的类的模拟,并返回您想要的任何特定结果。然后,您可以在不处理任何外部调用的情况下测试需要结果的类。

http://en.wikipedia.org/wiki/Mock_object
http://martinfowler.com/articles/mocksArentStubs.html

于 2010-05-05T11:05:42.830 回答