我使用NestJS框架和typeorm。使用数据库时,所有数据都会成功保存。连接没有问题。我尝试用Jest配置e2e测试。不幸的是,我有两个错误:
TypeError: Cannot read property 'getHttpServer' of undefined
和
找不到“用户”的存储库。看起来此实体未在当前“默认”连接中注册?
我试图使用本教程设置测试环境。
我的文件:
应用程序。e2e-spec.ts
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { AppModule } from '../src/app.module';
import { TypeOrmModule } from '@nestjs/typeorm';
describe('AppController (e2e)', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [
AppModule,
TypeOrmModule.forRoot({
'type': 'mssql',
'host': 'localhost',
'port': 1433,
'username': 'gift_draw_db',
'password': '',
'database': 'gift_draw_local',
'entities': ['./**/*.entity.ts'],
'synchronize': false,
}),
],
providers: [],
}).compile();
app = moduleFixture.createNestApplication();
console.error(process.env.DB_DATABASE_NAME, '<------------------------------'); // NEVER SEEN THIS
await app.init();
});
afterAll(async () => {
await app.close();
});
it('/api/ (GET)', async () => {
return request(app.getHttpServer()) // 1st error
.get('/api/')
.expect(200)
.expect('Working!');
});
});
应用程序。单元ts
@Module({
imports: [
ConfigModule,
AuthModule,
DrawModule,
UserModule
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
user.e2e-spec.ts
describe('User', () => {
let app: INestApplication;
let repository: Repository<User>;
beforeAll(async () => {
const module = await Test.createTestingModule({
imports: [
UserModule,
TypeOrmModule.forRoot({
'type': 'mssql',
'host': 'localhost',
'port': 1433,
'username': 'gift_draw_db',
'password': '',
'database': 'gift_draw_local',
'entities': ['./**/*.entity.ts'],
'synchronize': false,
}),
],
}).compile();
app = module.createNestApplication();
repository = module.get('UserRepository');
await app.init();
});
afterEach(async () => {
await repository.query(`DELETE FROM users;`);
});
afterAll(async () => {
await app.close();
});
});
user.module.ts
@Module({
controllers: [UserController],
imports: [TypeOrmModule.forFeature([User])],
providers: [UserService],
exports: [UserService, TypeOrmModule],
})
export class UserModule {
}
config.module.ts
@Module({
imports: [
NestConfigModule.forRoot({
isGlobal: true,
load: [configuration]
}),
TypeOrmModule.forRoot(process.env.NODE_ENV === 'production' ? {...configProd} : {...configDev} )
],
})
export class ConfigModule {
}
ConfigModule具有与测试模块相同的凭据。
问题是,当您启动应用程序时,基本目录是“dist”,而当您启动“e2e”测试时,基本目录是“src”。
您可以将实体定义更改为类似于以下内容:
entities: [__dirname + '/../**/*.entity.ts']
前言 吐槽 e2e测试在前端测试中,也许是最不被看重的一项吧。 小公司就不说了,即使是大厂,也极少有e2e测试。因为它需要花费的精力,相比得到的回报而言,可以说是相差悬殊,说白了,就是吃力不讨好- -|| e2e测试其实就是模拟用户行为,我们得根据业务写各种各样的不同操作。而几乎所有的项目,业务都是会变的。所以,因为业务变了,模拟用户行为也会随之改变。最后,就各种改,即改业务代码,又改测试代码,结
我正在尝试使用NestJS和TypeORM为我的数据库设置种子。 我有一个迁移文件,它创建了一个表,还有一个种子文件,它将一个插入到表中。这些文件的主要区别是迁移文件直接运行查询: 当种子文件获取存储库时: 这个是产生错误的那个。 在一个服务中,我获得了存储库并保存了实体,没有任何问题。问题只在播种时发生。 我注册打字格式如下: 哪里: 我正在使用使用以下网页配置编译和服务应用程序: 我的结构最终
这里的文件如下: 当涉及到应用程序的单元测试时,我们通常希望避免建立数据库连接,保持测试套件的独立性并尽可能快地执行它们。但是我们的类可能依赖于从连接实例中提取的存储库。我们如何处理?解决方案是创建模拟存储库。为了实现这一点,我们建立了自定义提供者。每个注册的存储库都由存储库令牌自动表示,其中EntityName是实体类的名称。 @nestjs/typeorm包公开了getRepositoryTo
我有一个实体像下面在Nestjs应用程序与typeorm为mongoDB: 我的其他实体扩展了审计,在我的应用程序中,我使用jwt来验证用户。 问题是,当我想保存一个实体,我不知道如何设置createdBy与@Before插入钩子... 我知道请求中有用户,但我不知道将用户引入方法的正确方法是什么?
问题内容: 我实际上正在尝试e2e测试我的简单应用程序,并且在处理angular- recaptcha(https://github.com/VividCortex/angular- recaptcha )时遇到一些麻烦。 这是我的测试: 因此,您可以看到我正在尝试填充Recaptcha值,但我不知道如何进行。 你能帮助我吗 ? 注意:我正在使用量角器 谢谢你的帮助 问题答案: 验证码已加载到中,
我无法使用安全性配置我的Spring Boot服务器的“自测”。这意味着我使用本教程创建了一个自签名证书。当我从浏览器打开https://localhost:8080时,没有问题,我有一个安全的加密连接。 但是,当我想要设置一个REST模板来调用https://localhost:8080时,我得到了这个错误: 测试类和项目:https://github.com/mpawel1993/family