连接到数据库的单元测试异步功能

陶JS

好吧,我有一些函数可以连接到数据库(redis)并返回一些数据,这些函数通常基于promise,但是它们是异步的并且包含流。我查看并阅读了一些有关测试的内容,然后选择了tape,sinon和proxyquire来使用,如果我嘲笑此功能,我将如何知道它的作用?

以下函数(listKeys)在完成扫描后(通过Promise)返回Redis数据库中存在的所有密钥。

let methods = {
    client: client,
    // Cache for listKeys
    cacheKeys: [],
    // Increment and return through promise all keys
    // store to cacheKeys;
    listKeys: blob => {
        return new Promise((resolve, reject) => {
            blob = blob ? blob : '*';

            let stream = methods.client.scanStream({
                match: blob,
                count: 10,
            })

            stream.on('data', keys => {
                for (var i = 0; i < keys.length; i++) {
                    if (methods.cacheKeys.indexOf(keys[i]) === -1) {
                        methods.cacheKeys.push(keys[i])
                    }
                }
            })

            stream.on('end', () => {
                resolve(methods.cacheKeys)
            })

            stream.on('error', reject)
        })
    }
}

那么如何测试这样的功能呢?

dm03514

我认为有几种方法可以通过测试来实现此功能,而所有方法都围绕配置要由测试使用的测试流而进行。

我喜欢先写一些我认为很重要的测试用例,然后找出实现它们的方法。对我来说最重要的是

it('should resolve cacheKeys on end')

然后需要创建一个流以提供给您的功能

var Stream = require('stream');
var stream = new Stream();

然后,扫描流需要由您的测试控制

您可以通过创建假客户端来做到这一点

client = {
  scanStream: (config) => { return stream }
}

然后可以使用您的断言配置测试

var testKeys = ['t'];

Method.listKeys().then((cacheKeys) => { 

  assert(cacheKeys).toEqual(testKeys);
  done() 
})

现在,您的诺言正在通过断言等待您的流将数据发送到流。

stream.emit('data', testKeys)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单元测试异步数据库方法

来自分类Dev

涉及数据库的单元测试

来自分类Dev

数据库功能Mock在C#Web API单元测试中不起作用

来自分类Dev

neo4j功能和单元测试-重置数据库

来自分类Dev

在不使用NodeJS连接数据库的情况下对Mysql进行单元测试

来自分类Dev

从数据库返回单元测试和数据

来自分类Dev

JDBC /数据库单元测试的最佳实践

来自分类Dev

用于数据库服务的AngularJS单元测试

来自分类Dev

如何对Django数据库迁移进行单元测试?

来自分类Dev

如何对Django数据库迁移进行单元测试?

来自分类Dev

单元测试数据库调用

来自分类Dev

rspec rails:单元测试数据库查询

来自分类Dev

当Symfony2表单使用链接到数据库的转换器时,如何对其进行单元测试

来自分类Dev

您可以在单元测试项目中使用Visual Studio数据库项目来为功能测试设置一个空数据库吗?

来自分类Dev

与数据库交互而不在数据库中创建数据的单元测试代码

来自分类Dev

在单元测试之间恢复数据库:数据库仍在使用中

来自分类Dev

连接到 Django 测试数据库

来自分类Dev

Visual Studio - 单元测试适配器无法连接到数据源或读取数据

来自分类Dev

当数据库架构和实体更改时,单元测试失败,但单元测试未更改

来自分类Dev

Django单元测试需要很长时间才能创建测试数据库

来自分类Dev

symfony中的单元测试实体何时使用测试数据库?

来自分类Dev

单元测试适配器无法连接到数据源

来自分类Dev

用于单元测试的核心数据临时数据库

来自分类Dev

如何对异步功能进行适当的单元测试?

来自分类Dev

功能单元测试

来自分类Dev

单元测试功能

来自分类Dev

在单元测试中连接到localDb会引发异常

来自分类Dev

单元测试检查数据库查询是否正确–可以嘲笑什么?

来自分类Dev

使用Spock和Robospock进行单元测试以创建SQLite数据库

Related 相关文章

  1. 1

    单元测试异步数据库方法

  2. 2

    涉及数据库的单元测试

  3. 3

    数据库功能Mock在C#Web API单元测试中不起作用

  4. 4

    neo4j功能和单元测试-重置数据库

  5. 5

    在不使用NodeJS连接数据库的情况下对Mysql进行单元测试

  6. 6

    从数据库返回单元测试和数据

  7. 7

    JDBC /数据库单元测试的最佳实践

  8. 8

    用于数据库服务的AngularJS单元测试

  9. 9

    如何对Django数据库迁移进行单元测试?

  10. 10

    如何对Django数据库迁移进行单元测试?

  11. 11

    单元测试数据库调用

  12. 12

    rspec rails:单元测试数据库查询

  13. 13

    当Symfony2表单使用链接到数据库的转换器时,如何对其进行单元测试

  14. 14

    您可以在单元测试项目中使用Visual Studio数据库项目来为功能测试设置一个空数据库吗?

  15. 15

    与数据库交互而不在数据库中创建数据的单元测试代码

  16. 16

    在单元测试之间恢复数据库:数据库仍在使用中

  17. 17

    连接到 Django 测试数据库

  18. 18

    Visual Studio - 单元测试适配器无法连接到数据源或读取数据

  19. 19

    当数据库架构和实体更改时,单元测试失败,但单元测试未更改

  20. 20

    Django单元测试需要很长时间才能创建测试数据库

  21. 21

    symfony中的单元测试实体何时使用测试数据库?

  22. 22

    单元测试适配器无法连接到数据源

  23. 23

    用于单元测试的核心数据临时数据库

  24. 24

    如何对异步功能进行适当的单元测试?

  25. 25

    功能单元测试

  26. 26

    单元测试功能

  27. 27

    在单元测试中连接到localDb会引发异常

  28. 28

    单元测试检查数据库查询是否正确–可以嘲笑什么?

  29. 29

    使用Spock和Robospock进行单元测试以创建SQLite数据库

热门标签

归档