【问题标题】:How to enter transaction callback in typeorm?如何在 typeorm 中输入事务回调?
【发布时间】:2019-11-01 04:45:08
【问题描述】:

我是单元测试的新手,并尝试使用 typeorm 进行一些测试。

我的代码是这样的:

    public executeTransaction(querys: IQueryTransaction[]) {
        return getManager().transaction(async transactionalManager => {
            for (const query of querys) {
                await transactionalManager.query(query[0], query[1]);
            }
        });
    }

我需要输入transaction callBack 但不知道该怎么做。我试图模拟 getManagertransaction 玩它,但没有结果。

我正在使用 jest、typeorm 和 nest。

有人知道怎么做吗?

编辑:连接到数据库不是一种选择

【问题讨论】:

    标签: unit-testing jasmine jestjs typeorm


    【解决方案1】:

    我认为你应该尝试这样的事情......

    return await getManager().transaction(async transactionalManager => {
      for (const query of querys) {
        await transactionalManager.query(query[0], query[1]);
      }
    });
    

    import {getManager} from "typeorm";
    
    await getManager().transaction(async transactionalManager => {
        await transactionalManager.save(users);
        await transactionalManager.save(photos);
    });
    

    @Controller("/user")
    export class UserController {
        constructor(
            private userService: UserService,
        ) {}
    
        @Post("/")
        @Transaction()
        async createNewUser(@Body() body: UserDTO) {        
            return await this.userService.createNewUser(body);
        }
    }
    

    【讨论】:

    • 一个 await 足以模拟它吗?我怎样才能做到这一点?
    • 先告诉我你到底想做什么?
    • 正如我的问题所说,我正在尝试对那段代码进行单元测试,但不知道该怎么做
    • 基本上我们在上面的代码中使用它作为我的 OR 部分。
    • @AlejandroBarone 请参阅我解释过的代码的第三部分。
    【解决方案2】:

    您可以使用 Istambul 来简化您的生活。

    /* istanbul ignore next */
    

    【讨论】:

    • 就目前而言,这个答案没有帮助。请扩展您的评论以阐明它如何回答问题。
    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 2022-09-28
    • 2019-11-25
    • 2022-12-23
    • 1970-01-01
    • 2021-10-29
    • 2021-09-25
    • 2019-05-09
    相关资源
    最近更新 更多