小编Spi*_*Xel的帖子

使用Jest模拟Es6类

我正在尝试使用接收参数的构造函数来模拟ES6类,然后使用Jest在类上模拟不同的类函数以继续测试.

问题是我找不到任何关于如何处理这个问题的文件.我已经看过这篇文章,但它并没有解决我的问题,因为OP实际上甚至不需要嘲笑这个类!该帖子中的另一个答案也没有详细阐述,没有指向任何在线文档,也不会导致可重现的知识,因为它只是一段代码.

所以说我有以下课程:

//socket.js;

module.exports = class Socket extends EventEmitter {

    constructor(id, password) {
        super();

        this.id = id;
        this.password = password;

        this.state = constants.socket.INITIALIZING;
    }

    connect() {
        // Well this connects and so on...
    } 

};

//__tests__/socket.js

jest.mock('./../socket');
const Socket = require('./../socket');
const socket = new Socket(1, 'password');

expect(Socket).toHaveBeenCalledTimes(1);

socket.connect()
expect(Socket.mock.calls[0][1]).toBe(1);
expect(Socket.mock.calls[0][2]).toBe('password');
Run Code Online (Sandbox Code Playgroud)

很明显,我试图模拟Socket和类函数连接的方式是错误的,但我找不到正确的方法.

请在您的回答中解释您为嘲笑这个以及为什么每个都是必要的逻辑步骤+如果可能的话,提供外部链接到Jest官方文档!

谢谢您的帮助!

javascript unit-testing node.js ecmascript-6 jestjs

19
推荐指数
1
解决办法
1万
查看次数

Celery v4没有按预期路由任务

我正在将我的芹菜工人从芹菜v3更新到celery v4,我的所有任务都是基于类的任务.我已手动注册任务,因为它是升级文档中指示的内容.

问题是在任务路由中,我有以下任务:

class RegisterTask(Task):
    routing_key = 'app_server.register'

    def run(**params):
        whatever ...
Run Code Online (Sandbox Code Playgroud)

我正在运行两个芹菜工作者,一个在默认队列中,另一个在寄存器队列中,如下所示:

# Default Worker
celery -A app_server worker --loglevel=info --concurrency=1

# Register Worker
celery -A app_server worker -Q app_server_register --loglevel=info --concurrency=1
Run Code Online (Sandbox Code Playgroud)

这是我的队列定义:

CELERY_TASK_DEFAULT_QUEUE = 'app_server_default'
CELERY_TASK_DEFAULT_ROUTING_KEY = 'app_server.default'

CELERY_TASK_QUEUES = (
    Queue('app_server_default', routing_key='app_server.default'),
    Queue('app_server_register', routing_key='app_server.register')
)
Run Code Online (Sandbox Code Playgroud)

意外行为是我在使用Celery V3和Celery V4调用任务时看到的差异.

# Celery V3
RegisterTask().delay(**params)
# task is consumed by the register worker!

# Celery V4
RegisterTask().delay(**params)
# task is consumed by the default …
Run Code Online (Sandbox Code Playgroud)

python django celery

10
推荐指数
1
解决办法
215
查看次数

Kafka主题具有leader = -1(Kafka Leader Election)的分区,而节点已启动并正在运行

我有一个3成员的kafka-cluster设置,__ consumer_offsets主题有50个分区.

以下是describe命令的结果:

root@kafka-cluster-0:~# kafka-topics.sh --zookeeper localhost:2181 --describe
Topic:__consumer_offsets    PartitionCount:50   ReplicationFactor:1 Configs:segment.bytes=104857600,cleanup.policy=compact,compression.type=producer
    Topic: __consumer_offsets   Partition: 0    Leader: 1   Replicas: 1 Isr: 1
    Topic: __consumer_offsets   Partition: 1    Leader: -1  Replicas: 2 Isr: 2
    Topic: __consumer_offsets   Partition: 2    Leader: 0   Replicas: 0 Isr: 0
    Topic: __consumer_offsets   Partition: 3    Leader: 1   Replicas: 1 Isr: 1
    Topic: __consumer_offsets   Partition: 4    Leader: -1  Replicas: 2 Isr: 2
    Topic: __consumer_offsets   Partition: 5    Leader: 0   Replicas: 0 Isr: 0
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

成员是节点0,1和2.

很明显,replica = …

apache-kafka apache-zookeeper kafka-topic

8
推荐指数
1
解决办法
1070
查看次数

GCM会在弃用后使用GCM为旧客户端提供新令牌

谷歌已于2018年4月10日弃用GCM,根据文件显示,将于2019年4月11日前停止支持GCM.

关于这个主题有很多Q/As,并且已经提到旧令牌将继续为现有用户工作,但我的问题是新用户是否能够在4月11日之后使用GCM 获取新令牌

所以基本上我有一个使用旧gcm代码库发布的应用程序,使用旧版本的google play服务,分发在另一个市场(不是Play商店).截至目前,安装得到他们的GCM令牌并且他们按预期工作,在弃用后安装我的(旧)应用程序的新用户会发生什么?我暂时不打算更新应用程序.

谢谢!

android google-cloud-messaging firebase-cloud-messaging

8
推荐指数
1
解决办法
355
查看次数

MongoDB 耗尽分片但平衡器未运行?(removeShard 花费太多时间)

我正在尝试将当前具有 8 个分片的分片集群缩小到具有 4 个分片的集群。

我从第 8 个分片开始,并尝试先将其删除。

db.adminCommand( { removeShard : "rs8" } );
----
{
    "msg" : "draining ongoing",
    "state" : "ongoing",
    "remaining" : {
        "chunks" : NumberLong(1575),
        "dbs" : NumberLong(0)
    },
    "note" : "you need to drop or movePrimary these databases",
    "dbsToMove" : [ ],
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

所以有 1575 个块要迁移到集群的其余部分。

但是运行sh.isBalancerRunning()我得到的值false和输出sh.status()如下:

  ...
  ...

  active mongoses:
        "3.4.10" : 16
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no …
Run Code Online (Sandbox Code Playgroud)

sharding mongodb

5
推荐指数
1
解决办法
685
查看次数

如何让mapserver工作

我一直在使用MapServer大约2个小时,但开始时似乎有些复杂.所以这是我的问题
有没有办法让mapserver显示一个简单的整个世界地图,我可以在其中移动地图以查看世界的不同部分?
(根据我到目前为止学到的内容,它只显示了你传递mapserv cgi的地图,地图是静态的,无法移动!)

编辑:我仍然想知道我是否可以为整个世界或国家或其他地方制作一张简单的地图!我应该写什么.我自己的地图文件?

apache gis mapserver

3
推荐指数
1
解决办法
3263
查看次数