【问题标题】:aws-sdk-js seems to be non functional when ran inside of jasmine在茉莉花内运行时,aws-sdk-js 似乎无法正常工作
【发布时间】:2019-05-21 04:54:22
【问题描述】:

当我将这段代码放在 jasmine 规范文件中时,它完全不起作用。不管它是在“it”块旁边还是完全在测试块之外,它都会停止运行。

const AWS = require("aws-sdk");
const cf = new AWS.CloudFormation({ apiVersion: "2010-05-15" });
cf.listStacks({}, (err, data) => console.log('cf.listStacks: ', err, data));

这可能是什么?

【问题讨论】:

    标签: aws-sdk-js


    【解决方案1】:

    要测试aws-sdk,而不是直接使用sdk,我认为你应该看看aws-sdk-mock

    通过使用存根,您可以防止在测试使用 AWS 开发工具包的函数时调用实际的 AWS 服务。

    【讨论】:

    • 我正在考虑那个库,但我担心的是那个库是否真的可以正确模拟。即我是否会通过并没有真正通过的测试?这是 AWS 支持的工具吗?
    • 您应该将此类测试作为集成测试的一部分 - 调用实际的 aws 服务并将其构建到您的管道中,以针对已部署的资源。在单元测试层测试这些不太合适。
    • 这就是目的,将其作为集成测试运行。 jasmine only 是否用于单元测试?我没有编写任何值得单元测试的大量代码。只是一个简单的层来协调 SQS 消息的发送/接收。
    • 这可能会有所帮助alxolr.com/articles/…
    【解决方案2】:

    我怀疑因为 aws-sdk js 使用了 jasmine,所以他们使它无法在 jasmine 中工作。

    此外,最好将特定的 aws 代码分离成一个函数,然后调用一个处理传入或传出数据的“处理器”函数。这样我就可以测试我编写的代码的功能,并且只信任 aws 数据。它也比创建 AWS 模拟要简单得多。此外,“模仿你不拥有的东西”通常被认为是不好的做法,因为你无法保证它是如何工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多