通过 lambda(无服务器)运行测试

时间:2021-02-23 20:45:36

标签: aws-lambda architecture google-cloud-functions serverless

假设我有一个代码片段和覆盖代码的测试(这里的玩笑只是一个例子)。

有没有可能

将测试定义为 lambda/cloud 函数:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

并且截取的代码登陆 s3/gcp 云存储:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

该函数将侦听事件(文件存储在特定文件夹中)并执行测试代码。

输出将存储回 s3/GCP 云存储上的文件或通过 API 发送。

我的问题:是否可以使用无服务器(lambda/云函数)来实现这个场景,以及从哪里开始。 (任何示例、链接、材料)。

谢谢。

1 个答案:

答案 0 :(得分:1)

据我所知,您的函数将从存储桶中获取代码。这会引入更多延迟,因为代码是在启动时加载的,并且从其他来源(如存储桶)动态获取代码会增加额外的延迟,因此我不推荐它。在无服务器上,您应该始终致力于尽快完成您的请求。

可以吗?是的,因为我从其他人那里问过,并说 Javascript 的动态性足以做到这一点。但话又说回来,注意后果。除非你有一个非常具体的用例,否则如果我是你,这不是一个非常理想的方法。

但是,这就是我想到的。您可以尝试使用客户端库从 Cloud Storage download 您的代码并将其放在 /tmp 上:

<块引用>

请注意,这是您可以write files 的唯一目录,它会将其存储在内存中。

然后从您的无服务器功能加载下载的资源。我还没有完全测试过如何做到这一点,但是 here's a thread 向您展示了如何。

相关问题