首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jest,Puppeteer,Typescript,ReferenceError:未定义Blob

Jest,Puppeteer,Typescript,ReferenceError:未定义Blob
EN

Stack Overflow用户
提问于 2019-09-06 20:53:53
回答 2查看 1.3K关注 0票数 2

我正在开发一个Typescript库,并尝试用Jest和Puppeteer编写测试。测试失败是因为ReferenceError: Blob is not defined。我遵循了Jest和Jest-Puppeteer的入门部分,但仍然遇到这个问题。如果测试在浏览器中运行,怎么能不定义Blob呢?我能做些什么来解决这个问题呢?

代码语言:javascript
复制
# jest.config.js
module.exports = {
    preset: 'jest-puppeteer',
    transform: {
        '^.+\\.ts$': 'ts-jest',
    },
};
代码语言:javascript
复制
# mylibrary.ts
function doSomething() {
  const blob = new Blob(...);
  return blob;
}
代码语言:javascript
复制
# mylibrary.spec.ts
it('should return a blob', function(){
    const b = doSomething();
    ...
});
EN

回答 2

Stack Overflow用户

发布于 2019-09-06 22:39:08

jest-puppeteer允许您使用puppeteer。它不会自动将您的代码(应该在浏览器中运行)包装到浏览器中。

代码示例

下面是一个如何使用jest-puppeteer的示例:

代码语言:javascript
复制
it('...', async () => {
    await page.goto('...');
});

问题修复

如果你想在浏览器中测试整个网站,使用jest-puppeteer。然后,您需要启动一个本地服务器,并使用puppeteer访问您的网站。

如果您希望在服务器上运行客户端库,则可能需要使用polyfills。您可以在您的情况下使用blob-polyfill

票数 1
EN

Stack Overflow用户

发布于 2021-12-01 19:32:25

我发现我需要在jest.config.json中将testEnvironment从node更改为jsdom。我的测试结果是我认为默认的testEnvironment是jsdom,但是在使用ts-jest之后,它变成了node,所以我把它改回了jsdom,如下所示

在此之前

代码语言:javascript
复制
 module.exports = {
   preset: 'ts-jest',
   testEnvironment: 'node',
 };

之后

代码语言:javascript
复制
 module.exports = {
   preset: 'ts-jest',
   testEnvironment: 'jsdom',
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57822441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档