Mongoose 需要一个将mockingoose与静态或方法结合使用的示例吗
试图用mockingoose模拟静态mongoose函数(getloginda),但运气不佳 有人给我举了一个有效的例子吗?以下是我得到的: 我的用户模型 //models/user.jsMongoose 需要一个将mockingoose与静态或方法结合使用的示例吗,mongoose,mocking,mockingoose,Mongoose,Mocking,Mockingoose,试图用mockingoose模拟静态mongoose函数(getloginda),但运气不佳 有人给我举了一个有效的例子吗?以下是我得到的: 我的用户模型 //models/user.js ... UserSchema.methods.login = function (username, password, host) { Game.setHost(host); this.setUserData(username, password); return this.constru
...
UserSchema.methods.login = function (username, password, host) {
Game.setHost(host);
this.setUserData(username, password);
return this.constructor.getLoginData().then(loginPageData => {
const loginData = Object.assign({}, defaultLoginData, {
name: this.username,
password: this.password,
login: loginPageData.loginInput
});
return this.constructor.loginWithUserData(loginData);
}).catch(error => console.log(error))
};
UserSchema.statics.getLoginData = function () {
const options = {
url: Game.getUrl(config.LOGIN),
};
return request(options, pages.getLoginPageData);
};
我的单元测试
//测试/user.js
...
describe('User', () => {
describe('login', function () {
it('username and password should set as virtual', () => {
const user = new User({});
mockingoose.User.toReturn(
Promise.resolve(responseMocks.loginPage), 'getLoginData'
);
mockingoose.User.toReturn(
expectedLoginData,
'loginWithUserData'
);
user.login('foo', 'bar').then(loginData => {
expect(user.username).to.equal(expectedLoginData.name);
});
})
});
});
好的,解决方法很简单。我只是直接模拟模型的静力学:
...
describe('User', () => {
describe('login', function () {
it('username and password should set as virtual', () => {
User.getLoginData = jest.fn(() =>
Promise.resolve(responseMocks.loginPage));
User.loginWithUserData = jest.fn(() => expectedLoginData);
const user = new User({});
user.login('foo', 'bar').then(loginData => {
expect(user.username).to.equal(expectedLoginData.name);
});
})
});
});