如何编写一个检查响应返回数据的http请求testing?

我在我的AccountsApiHandler模块中有以下方法,我想写一个testing,确定帐户是否正确返回。 如果我从我的一个testing中调用这个方法,我如何检索帐户列表?

 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); } }; 

这是我的testing,使用hammock npm模块来生成我的模拟请求和响应对象。 这个testing假定现有的帐户已经在testing数据库中了: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) }) } 

当我运行这个testing时,我的accountsstream是空的,因此给我一个accountsList的空账户清单。 有没有一个像样的方式从我的AccountsApiHandler.accounts方法获取帐户数据?

它看起来像我在上述问题的实施是接近的,而不是像这样stream的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) }) 

希望这有助于某人。 更多文档在npm的吊床网站上