簡體   English   中英

開玩笑錯誤:預期為“{”,得到“命名空間”...使用命名空間和@Injectable

[英]Jest Error: Expected '{', got 'namespace' ... Using namespace and @Injectable

我正在使用:NestJS,我有一個使用命名空間導出的 class。 在導出命名空間之后,我有 NestJS @Injectable裝飾器,當我嘗試運行測試時出現以下錯誤: × Expected '{', got 'namespace'

沒有@Injectable ,測試運行沒有問題,但我需要Injectable。

Class 可注射

export namespace SearchCase {
    @Injectable()
    export class SearchCase {

        constructor(private casesRepository: InterfaceRepository<Case.Case>) { }

        async execute(request: RequestSearchCase): Promise<ResponseSearchCase> {
            const searchResult = await this.casesRepository.search(request.search);

            return {
                searchResult,
            };
        }
    }
}

測試

describe('Search Case', () => {
    it('should be able return a case with substring', async () => {
        const casesRepository = new InMemoryCaseRepository();

        const searchCase = new SearchCase.SearchCase(casesRepository);

        const createCase = new Case.Case({
            utente: 'utente test',
            caseOrigin: 'case origin test',
            reportingDate: new Date(),
            reporterName: 'Emanuela Xavier',
            disease: 'disease test',
        })

        await casesRepository.create(createCase);
        
        const response = await searchCase.execute({
            search: 'Ema'
        });

        expect(response.searchResult.length).toBe(1);
        expect(response.searchResult[0].reporterName).toContain('Ema');
    });
});

ERROR運行測試時顯示的錯誤

刪除 @Injectable 測試工作沒有問題,但我需要使用它。

我使用的是 SWC/Jest 而不是 ts-jest,當我在我的 jest.config.ts 中切換到 ts-jest 時,即使我使用的是 @Injectable,測試也會恢復正常。

我仍然不明白為什么@swc/jest它會失敗,但現在它正在工作,當我有時間時我會研究更多以找出錯誤。

@swc/jest 的配置不起作用存檔:jest.config.ts

"transform": { 
    "^.+\\.(t|j)s$": ["@swc/jest"]
}

使用 @SW/jest 的配置有效存檔:jest.config.ts

"transform": { 
    "^.+\\.(t|j)s$": "ts-jest"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM