我的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 hammock = require(' hammock')
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
方法获取帐户数据?
答案 0 :(得分:0)
看起来我在上面的问题中的实现很接近,但不是像这样流式传输accounts
:
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)
})
}
我需要流式传输响应本身,它也没有data
事件:
accounts
.on('end', function (err, data) {
t.equals(data, actualAccounts)
})
希望这有助于某人。更多文档位于hammock站点上的npm