首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“预计将在'ProxyZone‘中运行,但没有找到。”带着玩笑

“预计将在'ProxyZone‘中运行,但没有找到。”带着玩笑
EN

Stack Overflow用户
提问于 2020-12-22 15:57:01
回答 1查看 1.9K关注 0票数 4

我正在用Karma将一个角度工作空间迁移到一个带有Jest的Nx工作区。我有几个问题,其中之一是使用fakeAsync,这会导致以下错误:

代码语言:javascript
运行
复制
Expected to be running in 'ProxyZone', but it was not found.

我不得不做一些恶作剧来开玩笑,因为我的应用程序使用的是“离子”和“离子本机”。我原以为这个问题与那些恶作剧有关,但我设法制造了一种最小再现。以下是重要的事情:

这是我的jest.preset.js。

代码语言:javascript
运行
复制
const nxPreset = require('@nrwl/jest/preset');
module.exports = {
  ...nxPreset,
  testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'],
  transform: {
    '^.+\\.(ts|js|html)$': 'ts-jest',
  },
  testEnvironment: 'jest-environment-jsdom-fourteen',
  resolver: '@nrwl/jest/plugins/resolver',
  moduleFileExtensions: ['ts', 'js', 'html'],
  coverageReporters: ['html'],
};

这是我的jest.config.js。

代码语言:javascript
运行
复制
module.exports = {
  preset: '../../jest.preset.js',
  coverageDirectory: '../../coverage/apps/products',
  snapshotSerializers: [
    'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js',
    'jest-preset-angular/build/AngularSnapshotSerializer.js',
    'jest-preset-angular/build/HTMLCommentSerializer.js',
  ],
  setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
  globals: {
    'ts-jest': {
      tsConfig: '<rootDir>/tsconfig.spec.json',
      stringifyContentPathRegex: '\\.(html|svg)$',
      astTransformers: {
        before: [
          'jest-preset-angular/build/InlineFilesTransformer',
          'jest-preset-angular/build/StripStylesTransformer',
        ],
      },
    },
  },
  displayName: 'products',
};

最后,这是我的测试文件。

代码语言:javascript
运行
复制
describe('AppComponent', () => {
  let fixture: ComponentFixture<AppComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [RouterTestingModule],
      declarations: [AppComponent],
      schemas: [CUSTOM_ELEMENTS_SCHEMA]
    }).compileComponents();
    fixture = TestBed.createComponent(AppComponent);

    fixture.detectChanges();
  }));

  // This test gives me an error.
  it('should create the app', fakeAsync(() => {
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  // This test passes.
  it(`should render the header`, () => {
    expect(
      fixture.nativeElement.querySelector('nx-example-header')
    ).toBeTruthy();
  });
});

最后,这里是测试设置。

代码语言:javascript
运行
复制
import 'jest-preset-angular';
import 'document-register-element';
import 'zone.js/dist/zone-testing';

这个设置对我来说似乎很普通,我不确定问题在哪一边(nx,jest,jest-预设角?)。

谢谢你的帮忙!

EN

Stack Overflow用户

回答已采纳

发布于 2020-12-22 16:18:41

通过从我的test-setup.ts文件中删除import 'zone.js/dist/zone-testing';行,我成功地修复了这个问题。我不知道为什么这个能修好它。我知道jest预设的角度补丁描述/测试函数,以便它们在Zone.js中工作。我猜zone.js/dist/zone-测试覆盖了修补程序或什么的。

票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65411822

复制
相关文章

相似问题

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