私はmongooseを使用しています。ユーザーを見つけてパスワードを有効にしようとするログイン機能があります(この機能のすべてのロジックはここでは説明しませんが、 。動的に取得されたオブジェクトからのスパイメソッド
function login(req, res) {
...
User.findOne(...)
.then((user) => {
user.validPassword(...);
...
});
}
私はvalidPasswordメソッドが含まれているUserモデルを定義して、すべてが正常に動作が、私はvalidPassword方法をスパイする問題があります。
私は私のテストにジャスミンを使用して、私はこの方法でこれを実行しようとしました:
const user = new User(...);
spyOn(user, 'validPassword').and.callThrough();
expect(user.validPassword).toHaveBeenCalled(); // was never called :(
そしてもちろん、私は、ログイン機能と呼ばれます。私はこのようにfindOneメソッドをテストするとき、それが正常に動作しますが、私は、ユーザーのコンストラクタからメソッドを呼び出すので、それは簡単です:
spyOn(User, 'findOne').and.callThrough();
expect(User.findOne).toHaveBeenCalled(); // this works fine!
私はfindOne方法は、新しいユーザーオブジェクトを解決するために私の問題は、異なるインスタンスに関連していると思います私とテストで私は2番目のものを作ります、絶対に違うものは何ですか、私はこの推測については分かりません。 修理方法を教えてもらえますか?