I have a simple register()
method which calls the mongoose save method
async register({firstName, lastName, email, password}){
try {
const salt = bcrypt.genSaltSync(10);
const hash = bcrypt.hashSync(password, salt);
return await new UserModel({
firstName,
lastName,
email,
hash
}).save()
}catch (err) {
console.log(`Unable to register new user: ${err}`)
throw 'Unable to register new user'
}
}
When I call my register()
method in my unit test, I want the mongoose save method to overwritten.
My unit test is as so:
import UserConnector from './user'
describe("User connector", () => {
let userConnector
beforeEach(() => {
userConnector = new UserConnector()
})
it("should register user", () => {
const expectedUser = {
firstName: "adsfja",
lastName: "adsfja",
email: "adsfja@alsda.com",
password: "password123"
}
var myStub = sinon.stub(UserModel.prototype, 'save').withArgs(expectedUser)
const user = userConnector.register(expectedUser)
expect(user).toEqual({
firstName: "adsfja",
lastName: "adsfja",
email: "adsfja@alsda.com"
})
})
})
I have stubbed my mongoose save function but how do I tell my register()
function to use the stubbed function instead of the default mongoose model save method?