#1012·framework

当我有一个插件嵌入在另一个插件中时,会出现测试问题。

作者: carloshenriquecarniatto创建于 2025年1月3日更新于 2025年1月3日

Here’s the revised bug report in English, incorporating the fact that the suggested Jest configuration did not resolve the issue:


Bug Report

Repro link:

Expected Behavior

When creating a custom plugin that depends on another custom plugin, the test suite should run without throwing parsing or configuration errors.

Current Behavior

typescript
// Test Code
import { HeaderContext } from './../../src/contexts/ig-header-context';
import { BindingSignaler } from 'aurelia-templating-resources';
import { NavigationInstruction } from 'aurelia-router';
import {ComponentTester, StageComponent} from 'aurelia-testing';
import {bootstrap} from 'aurelia-bootstrapper';
import { Container } from 'aurelia-framework';
const navigationInstructionMock: any = {
  params: {},
  queryParams: {},
  config: {
    name: 'testRoute'
  }
};

describe('HeaderContext', () => {  
  let signaler: BindingSignaler;
  let container: Container;
  let component: ComponentTester;
  let headerContext: HeaderContext;
  beforeEach(() => {   
    signaler = new BindingSignaler();
    container = new Container();    
    headerContext = new HeaderContext(signaler);
    container.registerInstance(HeaderContext, HeaderContext);
    component = StageComponent
      .withResources();
    component.bootstrap(aurelia => {
      aurelia.use.standardConfiguration();        
      aurelia.container = container;
        return aurelia.use;
    });  
  });

  it('should resolve and use all dependencies correctly', done => {
    component.create(bootstrap).then(() => {
      headerContext.setInstruction(navigationInstructionMock);
      headerContext.setPageTitle()
      expect(headerContext.setInstruction).toHaveBeenCalled();
      done();
    }).catch(done.fail);
  });

  it('should initialize with default values', () => {
    component.create(bootstrap).then(() => {
      expect(headerContext.id).toBe("");
      expect(headerContext.grupo).toBe("");
      expect(headerContext.sujeto).toBe("");
      expect(headerContext.propiedades).toEqual({});
      expect(headerContext.title).toBe("");
      expect(headerContext.instruction).toBeNull();
      expect(headerContext.affix).toBe(false);
      expect(headerContext.closed).toBe(true);
    });    
  });

  it('should set instruction and update title', () => {
    const instruction: NavigationInstruction = {
      config: { navModel: { title: 'Test Title' } }
    } as NavigationInstruction;
    headerContext.setInstruction(instruction);
    expect(headerContext.instruction).toBe(instruction);
    expect(headerContext.title).toBe('Test Title');
  });

  it('should reset properties and signal changes', () => {
    jest.spyOn(signaler, 'signal');
    headerContext.grupo = "test";
    headerContext.sujeto = "test";
    headerContext.propiedades = { key: "value" };
    headerContext.reset();
…

内容来源: aurelia/framework