gpt4 book ai didi

node.js - 使用 Vows 测试 Mongoose 模型

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:47 25 4
gpt4 key购买 nike

对于整个 node.js 社区来说都是新手,我在我的第一个应用程序上进行单元测试时遇到了问题。问题是它们通过了,但它们实际上从未在回调中运行断言。据我了解, Mongoose (我用来与 MongoDB 对话的库)使用回调来处理它的 API。在我的誓言测试中,这些回调似乎没有被触发。一个例子:

vows = require 'vows'
assert = require 'assert'
mongoose = require 'mongoose'

ProjectSchema = new Schema
name: String
Project = mongoose.model 'Project', ProjectSchema

mongoose.connect('mongodb://localhost/testdb');


projectBatch = vows.describe('Project').addBatch
'model attributes':
topic: ()->
new Project()
'should have a name field': (topic)->
topic.name = "some name"
topic.save
console.log "this gets executed just fine"
Project.findById topic.id, (error, project)->
console.log "THIS LINE NEVER RUNS!"
assert.equal "some name", project.name

projectBatch.export module

关于我在这里做错了什么有什么想法吗?

最佳答案

这不是誓言的运作方式。誓言不能异步。您应该使用子主题进行异步测试

伪代码(我不会写CS)

topic: () -> new Project()
'should have name': {
'topic': (topic) ->
topic.name = "some name"
topic.save
Project.findById topic.id, this.callback
return;
'that can be saved': (err, proj) ->
console.log "SHOULD RUN"
assert.equal "some name", proj.name
}

如您所见,您创建了一个新上下文,其中包含一个执行异步事件的主题。然后,您对异步事件返回的数据发誓。

关于node.js - 使用 Vows 测试 Mongoose 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com