我在測驗 Nest.js 應用程式中覆寫提供程式時遇到問題。我的 stats.controller.spec.ts:
import { StatsService } from './services/stats.service';
import { StatsController } from './stats.controller';
describe('StatsController', () => {
let controller: StatsController;
const mockStatsService = {};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [StatsController],
providers: [StatsService],
})
.overrideProvider(StatsService)
.useValue(mockStatsService)
.compile();
controller = module.get<StatsController>(StatsController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
我的 stats.controller.ts:
import { Controller, Get } from '@nestjs/common';
import { StatsService } from './services/stats.service';
@Controller('stats')
export class StatsController {
constructor(private statsService: StatsService) {}
@Get('weekly')
getWeeklyStats() {
return this.statsService.getWeeklyStats();
}
@Get('monthly')
getMonthlyStats() {
return this.statsService.getMonthlyStats();
}
}
還有我的 stats.service.ts:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Trip } from 'src/trips/trip.entity';
import { from, map } from 'rxjs';
import { DatesService } from 'src/shared/services/dates.service';
@Injectable()
export class StatsService {
constructor(
@InjectRepository(Trip) private tripRepository: Repository<Trip>,
private datesServices: DatesService,
) {}
//some code here
}
運行測驗后,我收到以下錯誤: 無法從“stats/services/stats.service.ts”中找到模塊“src/trips/trip.entity”, 我非常感謝您的幫助。
uj5u.com熱心網友回復:
該錯誤與您是否使用自定義提供程式或overrideProvider. Jest 默認不理解絕對匯入,您需要使用moduleNameMapper選項來告訴 Jest 如何決議src/匯入。通常類似
{
"moduleNameMapper": {
"^src/(.*)$": "<rootDir>/$1"
}
}
假設rootDir已設定為src
uj5u.com熱心網友回復:
您可以通過在 nest js 中使用以下代碼來覆寫提供程式:
import { StatsService } from './services/stats.service';
import { StatsController } from './stats.controller';
describe('StatsController', () => {
let controller: StatsController;
const mockStatsService = {};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [StatsController],
providers: [{
provide: StatsService,
useValue: mockStatsService
}],
})
.compile();
controller = module.get<StatsController>(StatsController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/373346.html
標籤:javascript 节点.js 测试 玩笑 嵌套
下一篇:在Laravel8中編譯sass
