首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js Mocha单元测试错误re: Mockgoose模拟猫鼬,“错误设置集合上的TTL索引:会话”

Node.js Mocha单元测试错误re: Mockgoose模拟猫鼬,“错误设置集合上的TTL索引:会话”
EN

Stack Overflow用户
提问于 2014-03-22 19:45:28
回答 3查看 2.8K关注 0票数 6

在开发这个开源应用程序时,GitHub上的outrightmental/partybot-web.git构建在达夫特蒙强大的约曼角满叠生成器之上。

我一直试图将我的技能集中在Node.js测试(本地和CI)期间进行Node.js模拟的当代热点问题上。

我喜欢摩卡咖啡运行,印度茶喜欢断言。在淘汰了许多早期竞争者之后,我现在正在尝试用莫克鹅代替MongoDB来模仿猫鼬模型。

还请参阅与此问题相关的构建,在我的开放源码Travis上的partybot web CI

到目前为止,这个配置已经成功地运行了一些数据库操作,这证明了Mockgoose并不是完全浪费时间。然而,这个“会话”表似乎在阻碍它。

请参阅下面的本地执行示例(Ubuntu 12),并告诉我是否有任何节点向导有智慧之珠.

非常感谢!-Nick

代码语言:javascript
复制
nick@om-ultrabook-ubuntu:~/Development/partybot-web$ mocha test/server/api/incoming/sms.js 
  info  - socket.io started
    Express server listening on port 3000 in development mode
Error: Error setting TTL index on collection : sessions
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/lib/connect-mongo.js:161:23
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1404:28
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1542:30
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:159:22
  at commandHandler (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:678:48)
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1806:9
  at __executeQueryCommand (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1636:44)
  at Db._executeQueryCommand (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1805:7)
  at Cursor.nextObject (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:729:13)
  at Cursor.toArray (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:158:10)
  at Cursor.toArray (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/scope.js:10:20)
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1541:65
  at Db.collection (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:495:44)
  at Db.indexInformation (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1539:8)
  at Db.ensureIndex (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1403:8)
  at Collection.ensureIndex (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/collection/index.js:65:11)
  at /home/nick/Development/partybot-web/node_modules/connect-mongo/lib/connect-mongo.js:159:29
  at Db.collection (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:495:44)
  at MongoStore._get_collection (/home/nick/Development/partybot-web/node_modules/connect-mongo/lib/connect-mongo.js:150:17)
  at MongoStore.set (/home/nick/Development/partybot-web/node_modules/connect-mongo/lib/connect-mongo.js:262:12)
  at Session.save (/home/nick/Development/partybot-web/node_modules/express/node_modules/connect/node_modules/express-session/session/session.js:63:25)
  at ServerResponse.res.end (/home/nick/Development/partybot-web/node_modules/express/node_modules/connect/node_modules/express-session/index.js:304:19)
  at twilioResponse (/home/nick/Development/partybot-web/lib/controllers/incoming.js:19:7)
  at Promise.<anonymous> (/home/nick/Development/partybot-web/lib/controllers/incoming.js:58:5)
  at Promise.<anonymous> (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
  at Promise.EventEmitter.emit (events.js:98:17)
  at Promise.emit (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
  at Promise.fulfill (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
  at handleSave (/home/nick/Development/partybot-web/node_modules/mongoose/lib/model.js:133:13)
  at /home/nick/Development/partybot-web/node_modules/mongoose/lib/utils.js:408:16
  at /home/nick/Development/partybot-web/node_modules/mockgoose/lib/Collection.js:116:13
  at Object.validateOptions [as validate] (/home/nick/Development/partybot-web/node_modules/mockgoose/lib/validation/Validation.js:40:5)
  at Collection.insert (/home/nick/Development/partybot-web/node_modules/mockgoose/lib/Collection.js:110:20)
  at model.save (/home/nick/Development/partybot-web/node_modules/mongoose/lib/model.js:190:21)
  at model._done (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/hooks/hooks.js:59:24)
  at _next (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/hooks/hooks.js:52:28)
  at fnWrapper (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/hooks/hooks.js:159:8)
  at model.<anonymous> (/home/nick/Development/partybot-web/lib/models/message.js:31:3)
  at _next (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/hooks/hooks.js:50:30)
  at fnWrapper (/home/nick/Development/partybot-web/node_modules/mongoose/node_modules/hooks/hooks.js:159:8)
  at complete (/home/nick/Development/partybot-web/node_modules/mongoose/lib/document.js:974:5)
  at /home/nick/Development/partybot-web/node_modules/mongoose/lib/document.js:965:20
  at ObjectId.SchemaType.doValidate (/home/nick/Development/partybot-web/node_modules/mongoose/lib/schematype.js:603:22)
  at /home/nick/Development/partybot-web/node_modules/mongoose/lib/document.js:956:9
  at process._tickCallback (node.js:415:13)
GET /api/incoming/sms 200 21ms
․db connection open
POST /api/incoming/sms 200 6ms
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-25 03:02:36

“会话”MongoDB集合是由Node.js Express框架的“会话”模块在这里请求的:

代码语言:javascript
复制
Session.save (node_modules/express-session/session/session.js:63:25)

我一直在用莫克鹅来嘲弄我的猫鼬包装的MongoDB表。正在完美地完成它的工作,

问题是这个“会话”集合是直接在Express框架配置中指定的,没有实现Mongoose

代码语言:javascript
复制
    // Persist sessions with mongoStore
app.use(express.session({
  secret: 'angular-fullstack secret',
  store: new mongoStore({
    url: config.mongo.uri,
    collection: 'sessions'
  }, function () {
      console.log("db connection open");
  })
}));

我将不得不单独进行我的快速会话嘲弄!

票数 4
EN

Stack Overflow用户

发布于 2014-03-23 01:16:06

并非所有的猫鼬都已完全实施。但是,如果您可以添加一个显示此问题的测试用例,那么我通常将重点放在实现该项而不是列表中的其他项上。

https://github.com/mccormicka/Mockgoose/issues/38

票数 2
EN

Stack Overflow用户

发布于 2014-07-12 03:17:06

我遇到了同样的问题--我的解决方案是使用速成会话的内存选项(在没有指定其他内存的情况下使用默认选项),而不是使用mongodb。很快,我就这么做了:

代码语言:javascript
复制
if (process.env.NODE_ENV === 'test') {
    app.use(session({ secret: config.sessionSecret }));
} else {
    app.use(session({
        secret: config.sessionSecret,
        store: new mongoStore({
            //db: db.connection.db,
            mongoose_connection: db.connection,
            collection: config.sessionCollection
        })
    }));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22582648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档