Ich möchte einige Funktionen in einem node.js-Modul testen. Ich denke, es wäre hilfreich, sich über ein drittes Modul lustig zu machen. zu vermeiden, insbesondereVerspottende Module in Node.js für den Komponententest
die Datenbank schlägt# models/account.coffee
register = (email, password)->
sha_sum.update(password)
pw = sha_sum.digest('hex')
user =
email: email
password: sha_sum.digest('hex')
users_db.save user, (err, doc)->
register_callback(err)
account_module =
register: register
module.exports = account_module
Dies ist das Modul, das ich testen will
# routes/auth.coffee
account = require '../models/account'
exports.auth =
post_signup: (req, res)->
email = req.body.email
password = req.body.password
if email and password
account.register(email, password)
res.send 200
else
res.send 400
ich, dass Schlagen diese URL mit dem richtigen Körper in der Post testen können, wollen ruft die account.register
Funktion, aber ich möchte nicht, dass der Test die Datenbank trifft. Ich habe das Account-Modul noch nicht implementiert.
Die Jasmin spec # specs/auth.test.coffee beschreiben 'Registrierung', ->
request = require 'request'
it 'should signup a user with username and password', (done)->
spyOn(account, 'register') # this does not work, account.register still called
url = root + '/signup'
headers =
"Content-Type": "application/json"
data =
email: '[email protected]'
password: 'pw'
body = JSON.stringify(data)
request {url: url, method: 'POST',json: data, headers: headers }, (err, response, body)->
expect(response.statusCode).toEqual(200)
done()
ich für node.js in mehrere spöttische Bibliotheken ausgesehen haben (https://github.com/easternbloc/Syringe, https://github.com/felixge/node-sandboxed-module) aber bisher Kein Erfolg. Was auch immer ich in der Spezifikation versuche, die account.register
immer ausgeführt werden. Ist dieser ganze Ansatz fehlerhaft?
Es ist wie horaa sieht (https://github.com/arunoda/horaa) funktionieren könnte –
sinon.js Versuchen Sie, eine ausgezeichnete Stub/spy/Mock/mockServer-Bibliothek. – nottinhill