I'm using Node.js
with felixge's node-mysql
client. I am not using an ORM.
I'm testing with Vows and want to be able to mock my database, possibly using Sinon. Since I don't really have a DAL per se (aside from node-mysql
), I'm not really sure how to go about this. My models are mostly simple CRUD with a lot of getters.
Any ideas on how to accomplish this?
With sinon, you can put a mock or stub around an entire module. For example, suppose the mysql
module has a function query
:
var mock;
mock = sinon.mock(require('mysql'))
mock.expects('query').with(queryString, queryParams).yields(null, rows);
queryString
, queryParams
are the input you expect. rows
is the output you expect.
When your class under test now require mysql and calls the query
method, it will be intercepted and verified by sinon.
In your test expectation section you should have:
mock.verify()
and in your teardown you should restore mysql back to normal functionality:
mock.restore()