【发布时间】:2015-06-30 10:40:05
【问题描述】:
我的AccountsApiHandler 模块中有以下方法,我想写一个测试是否正确返回帐户。如果我从我的一项测试中调用此方法,如何检索帐户列表?
AccountsApiHandler.prototype.accounts = function (req, res) {
var self = this
/*
* Get list of accounts
*/
if (req.method === 'GET') {
return self.server.accounts.listAccountAsJson()
.pipe(JSONStream.stringify())
.pipe(res);
}
};
这是我的测试,使用hammock npm 模块生成我的模拟请求和响应对象。此测试假定现有帐户已经在测试的数据库中:
var test = require('tape')
var吊床=需要('吊床')
var accountsApiHandler = require('../../handlers/accounts-api')()
test('create initial accounts', function (t) {
request = hammock.Request({
method: 'GET',
headers: {
'content-type': 'application/json'
},
url: '/somewhere'
})
request.method = 'GET'
request.end()
response = hammock.Response()
var accounts = accountsApiHandler.accounts(request, response)
console.log("test.accountsApiHandler: accountsApiHandler.accounts: accounts", accounts) // `accounts` is undefined!
var accountsList = []
var actualAccounts = getAccountsFromDatabase() // the actual accounts from our db
accounts
.on('data', function (data) {
accountsList.push(data)
})
.on('error', function (err) {
t.fail(err)
})
.on('end', function () {
console.log("results:", accountsList)
t.equals(accountsList, actualAccounts)
})
}
当我运行这个测试时,我的accounts 流是空的,因此给了我一个空的accountsList 帐户列表。有没有一种不错的方法可以从我的 AccountsApiHandler.accounts 方法中获取帐户数据?
【问题讨论】:
标签: node.js unit-testing http