小编Luc*_*udd的帖子

使用mocha进行测试时Node.js执行CronJob

所以,我有一些js代码,它是一个slackbot,它应该只是简单地监听和解析所提供的日期,然后根据提供的cron或date格式启动一个CronJob来运行某个函数.像这样的东西.

var CronJob = require ('cron').CronJob;
...
robot.respond(date, function (msg)) {
if(!isValidDate(date)) msg.reply("not a valid date);
var interval = isCronDate(date) ? date : new Date(date);
msg.reply("Job about to be scheduled.")
var schedule = new CronJob(interval, processDataOnDate(), function() { msg.reply("hello") },  true);
}
Run Code Online (Sandbox Code Playgroud)

我有一个测试此代码的咖啡文件,我希望回复某些响应,但我不希望根据我在测试代码中提供的日期执行cron作业.但是,确实如此.这是正常的吗?摩卡是否强制代码完成执行,因为这是一个单元测试,或者我做错了什么?我正在运行它来执行我的单元测试.

mocha --compilers coffee:coffee-script/register
Run Code Online (Sandbox Code Playgroud)

有关详细信息,我将其作为slackbot运行,因此这些都是以"说"和"回复"的形式完成的.我的一个测试看起来像这样.

beforeEach ->
    yield @room.user.say 'bob', '@bot schedule at 2017-05-25 18:00:00'
expect(@room.messages).to.eql [
    ['bob', 'bot schedule at 2017-05-25 18:00:00']
    ['bot', 'Job about to be scheduled']

]
Run Code Online (Sandbox Code Playgroud)

测试失败并通知我实际结果包括机器人的'hello'消息,尽管我在测试中提供的日期是将来的.

cron mocha.js node.js slack node-cron

7
推荐指数
1
解决办法
599
查看次数

在clojure中定义多个常量变量

我试图在clojure中定义几个常量变量.有没有办法在一个def语句中定义所有这些?或者我必须单独定义每一个?

在任何编程语言(C++ Java)中,您可能希望能够执行以下操作

    const int x, y, z;
    x = y = z = 0;
Run Code Online (Sandbox Code Playgroud)

然而,在clojure中,我在使用def声明做类似的事情时遇到了麻烦.我尝试过基于'let'语法的东西:

    (def ^:const [x 2 y 3 z 8])
Run Code Online (Sandbox Code Playgroud)

和类似的东西

    (def ^:const x 2 y 3 z 8)
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.我必须单独定义每个变量吗?

variables const clojure

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

标签 统计

clojure ×1

const ×1

cron ×1

mocha.js ×1

node-cron ×1

node.js ×1

slack ×1

variables ×1