3

jasmine-node を使用してサーバーをテストしています。ユーザークラスで検証関連のコードを偽装/バイパスしたい。だから私はこのようなスパイを設定します -

var user = {
  email: 'email@email.com',
  password: 'password'
}

spyOn(User, 'validateFields').andReturn(user);

ただし、validateFields 関数は非同期です...

User.prototype.validateFields = function(user, callback) {

  // validate the user fields

  callback(err, validatedUser);
}

したがって、実際には、リターンの代わりにコールバックを偽造するこのようなものが必要になります-

var user = {
  email: 'email@email.com',
  password: 'password'
}

spyOn(User, 'validateFields').andCallback(null, user);

ジャスミンでこのようなことは可能ですか?

4

3 に答える 3

2

これには 2 つの方法があります。最初にスパイしてから、スパイの最初の呼び出しの引数を取得し、モック データでこの関数を呼び出します。

spyOn(User, 'validateFields')
//run your code
User.validateFields.mostRecentCall.args[1](errorMock, userMock)

もう 1 つの方法は、sinonJSスタブを使用することです。

sinon.stub(User, 'validateFields').callsArgWith(1, errorMock, userMock);

これにより、モック化されたデータを使用してコールバック関数がすぐに呼び出されます。

于 2013-07-02T08:07:14.207 に答える
0

コールバック関数を渡して、この関数が呼び出されたかどうかを尋ねることができます。

于 2013-07-02T06:47:16.180 に答える