quibble icon indicating copy to clipboard operation
quibble copied to clipboard

using quibble with momentjs

Open t1a2l opened this issue 2 years ago • 1 comments

moment is installed with npm, and is used throughout my code not just in the test. I am trying to call a fake moment function instead of normal one, i am using sinon and was suggested to use quibble for this. I see in the docs somethign with paths but i am doing this: (it is inside node modules)

const moment = require('moment') const jwt = require('jsonwebtoken'); describe('Admin logged in', () => { //create a sandbox so at the end we can release all fun at once. const sandbox = sinon.createSandbox(); before(async function() { sandbox.stub(jwt, 'verify').callsArgWith(2, null, scope); how can i achieve a stub of an entire library with this package?

momentjs : /** @param strict Strict parsing disables the deprecated fallback to the native Date constructor when parsing a string. */ declare function moment(inp?: moment.MomentInput, strict?: boolean): moment.Moment; export = moment; export as namespace moment;

t1a2l avatar Jun 04 '23 12:06 t1a2l

You could try mocking the entire moment library (which I don't recommend, since it's a function that returns a bevvy of other functions and you'd just be reimplementing them through a mocking library):

const td = require('testdouble')
const moment = td.replace('moment')

// moment is now a testdouble mock function, faked out by quibble

Or you could create a moment and then fake that, which makes more sense:

const td = require('testdouble')
const moment = require('moment')


const fakeMoment = td.replace('moment')
// fakeMoment is a fake function with the dozens of functions on the moment object replaced with mocks

See testdouble.js for docs. Quibble is available to anyone who wants to use it on its own, but I'd consider the API more advanced, less documented, etc.

searls avatar Jun 05 '23 11:06 searls