我可以嘲笑find的版本
Model.find({'a': 'b'}).then(value => {
///whatever
}).catch(err => whatever.else());
开玩笑地说:
Educator.find = jest.fn().mockResolvedValue({'hi': 'its me'});
然后,当调用find时,promise按预期解析。Model. find有另一种语法传递回调(而不是使用返回的promise),例如:
Model.find({'a': 'b'}, (err: any, value: IModel) => {
if (err) {
// whatever error handling
}
// whatever you want with the result
});
我试过了
Model.find = jest.fn((conditions, callback) => {callback(null, {'oi': 'its a me'})})
但是我得到了一个错误"Type 'void' is not assignable to type 'Query〈any,any,{},IModel〉'"-所以它认为我试图模仿find的版本,定义如下:
find<ResultDoc = HydratedDocument<T, TMethodsAndOverrides, TVirtuals>>(
filter: FilterQuery<T>,
projection?: ProjectionType<T> | null | undefined,
options?: QueryOptions<T> | null | undefined,
callback?: Callback<ResultDoc[]> | undefined
): QueryWithHelpers<Array<ResultDoc>, ResultDoc, TQueryHelpers, T>;
但我真的想要这个:
find<ResultDoc = HydratedDocument<T, TMethodsAndOverrides, TVirtuals>>(
filter: FilterQuery<T>,
callback?: Callback<ResultDoc[]> | undefined
): QueryWithHelpers<Array<ResultDoc>, ResultDoc, TQueryHelpers, T>;
希望我的要求有道理。我想知道怎么才能正确地嘲笑它。
1条答案
按热度按时间7xllpg7q1#
回答我自己的问题...
这按预期工作
我敢打赌有一个更干净的方式虽然-仍然很想知道!