【问题标题】:test code which modifies database without changing the database state修改数据库而不改变数据库状态的测试代码
【发布时间】:2018-05-16 06:14:38
【问题描述】:

如何测试一个 .实际修改数据库而不实际更改数据或数据库状态的函数。我们如何使用 dbunit 来实现它?

我有一个模型函数

const newValue = await app.models.module.functionname({
       id: '005q21', typoe: 'XXX', isActive: false
});

实际上在 db 中写入一行并返回 newValue 类型是一个对象。我如何编写一个实际在生产中运行的单元测试,并在不更改实时数据的情况下针对数据库验证功能。 (使用 dbunit )

我正在使用 mocha 为 node.js /sql 应用程序编写测试

【问题讨论】:

    标签: sql node.js unit-testing dbunit


    【解决方案1】:

    我如何编写一个实际在生产环境中运行的单元测试和 针对数据库验证函数

    这是 dbUnit 标准功能,因此请从 *TestCase 方法之一开始,例如 PrepAndExpectedTestCase

    只需让 dbUnit 比较预期数据,它就会像往常一样无损地为您检查数据库。

    不改变实时数据

    1. 不要配置任何准备数据,它不会插入任何行。
    2. 在已配置的数据库测试器上,将其配置为不更新表:

      一个。将 SetUpOperation 设置为 DatabaseOperation.NONE

      b.将 TearDownOperation 设置为 DatabaseOperation.NONE

      请注意,当 TearDownOperation 设置为 DatabaseOperation.NONE 时,测试创建的行将保留在数据库中。这可能是您想要的,但通常希望 dbUnit 在完成后清理创建的行(所有行或特定行;请参阅 DatabaseOperation 选项)。

    【讨论】:

    • 问题是应用程序在 node.js 中,单元测试也是如此,我找不到使用 npm / node.js 的 dbunit 等效项。我需要找出一个测试策略,其中为每个测试创建一个干净的数据库设置,然后是测试本身。数据库单元是一个选项,但 node.js 中有什么?请建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多