我在NestJS上用Typescript开发了一个应用程序,使用TypeORM和用Jest编写的单元测试。我有一个使用如下事务的函数:
async createMany(users: User[]) {
await this.connection.transaction(async manager => {
await manager.save(users[0]);
await manager.save(users[1]);
});
}
这是NestJS文档中的一个示例。我通过this以大致相同的方式完成。联系事务
,但业务逻辑不同。
问题是我想做一个单元测试来测试这个服务功能。所以我需要以某种方式模拟这两个。连接
及其管理器
。或者至少是经理。我不知道如何用笑话来表达。我无法创建没有连接的管理器。我无法在没有管理器返回的情况下创建模拟连接。
在NestJS中,同时使用TypeORM和Jest是标准的。必须有一种使用事务编写单元测试的方法。但我不知道怎么做。
注意,我询问的是单元测试模拟ORM。不是直接使用测试db实例的集成测试。
我相信你也可以:
import { getConnectionToken } from '@nestjs/typeorm';
{
provide: getConnectionToken(),
useClass: Connection,
},
您需要使用模拟的连接创建一个
测试模块
。像这样的事情:
import { Test } from "@nestjs/testing";
describe("UsersService", () => {
let usersService;
let connection;
const mockConnection = () => ({
transaction: jest.fn()
});
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
UsersService,
{
provide: Connection,
useFactory: mockConnection
}
],
}).compile();
usersService = await module.get<UsersService>(UsersService);
connection = await modle.get<Connection>(Connection);
});
describe("some tests", () => {
it("should test something", async () => {
const someMockedUsers = [/* some users */];
const mockedManager = {
save: jest.fn()
}
connection.transaction.mockImplementation((cb) => {
cb(mockedManager);
});
await userService.createMany(someMockedUsers);
expect(connection.transaction).toHaveBeenCalled();
expect(mockedManager.save).toHaveBeenCalledTimes(2);
// ...
});
});
});
来自维基百科: 从那以后,Connect Four已经用蛮力方法解决了,从John Tromp编译8层数据库的工作开始[4][8](1995年2月4日)。能够强力解决Connect Four的人工智能算法是最小最大值或负最大值,其优化包括alpha-beta修剪,游戏玩家移动的动态历史排序和换位表。使用这些方法求解连接四的代码也是 Fhourstones 整数性能基准测试的基础。 我一直在试图加快
问题内容: 我正在使用node.js和socket.io构建一个小型原型。一切运行正常,我面临的唯一问题是我的node.js连接将断开连接,并且我被迫刷新页面以重新建立连接并重新运行。 有一种方法可以在断开事件触发后立即重新建立连接? 据我所知,这是一个普遍的问题。因此,我正在寻找解决该问题的最佳实践方法:) 非常感谢,丹 问题答案: 编辑:Socket.io已内置支持现在 当我使用socket.
目前,我正在努力连接并在f#中针对本地azure表存储(开发存储)执行操作。 我能找到的唯一与存储Auth连接的方法。StorageCredentials(accountName,accountKey)似乎不接受我在C#解析方法中使用的developmentstorage=true字符串。 我尝试使用相应的帐户名和密钥(devstoreaccount1,eby 8 VDM 02 xnoqflquw
问题内容: 我有这个反应 在这种情况下,如何测试axios?开玩笑说那里有一个异步代码的用例,在那里他们使用了模拟功能,但是我不知道我是否可以用axios做到这一点?参考:https : //facebook.github.io/jest/docs/tutorial- async.html 到目前为止,我已经测试了它是否返回了正确的类型 我不知道如何传递模拟数据并测试它是否返回,但是有人有任何想法
我需要帮助,在理解JSF连接Java类文件的方式。在我当前进入的项目中,它使用类对象将JSF与Java类连接起来。但我不知道对象在哪里初始化。在Struts中,我们通过Struts.xml将JSP与action连接起来。但是在这里我没有看到任何映射,它只是使用 这里的是一个对象,而不是类名。 我的问题是这个如何精确地连接到classname? 除了冬眠,我只是一个星期以上的经验。请帮我把你所有的东
如何完全断开本地Git存储库与所有远程分支的连接? 我从github克隆了一个Git存储库。com,但后来它被删除了,我不希望Git报告任何需要“推送”的更改。我试过用谷歌搜索这个,但我认为我的术语是错误的,我什么也找不到。 我可以简单地从我的列表中删除和部分吗。git/config文件,还是会破坏我的本地存储库?