0

テストする私のアプリケーションコード:

create(params) {
  let result = {};
  try {
    result = await this.db.query('/* some query */');
  } catch (e) {
    throw new Error('Error creating User', e);
  }
  return this._getById(result.insertId);
}

私は_getByIdそれが言うことを正確に行う同じクラスのメソッドを持っています...

そして私の現在のテスト(Avaを介して実行):

test('it should create a user', async t => {
  const db = mock({
    query: () => {
    },
  });
  const userObj = {
        // some params
  };
  const user = new Users({
    db: db.object,
  });
  const call = {
    request: userObj,
  };
  const result = await user.create(call);
    // test?
});

result変数に基づいて何かをテストしようとすると、つまり. 新しく作成されたユーザー、エラーが表示されます"Cannot read property 'insertId' of undefined"createこのメソッドが新しく作成された「ユーザー」を返すことをテストするためのSinonの最良のオプションは何ですか?

4

1 に答える 1

0

"Cannot read property 'insertId' of undefined"次のモックは何かを返さないので、あなたが持っていると思います

const db = mock({
  query: () => {
  },
});

そんなもの返してくれたら

const db = mock({
  query: () => {
    return {
      username: "username"
    }
  },
});

テストでは、結果に値が含まれ、expect を使用して、期待される結果が得られるかどうかを確認できるはずです。

{
  username: "username"
} 

この特定のテストの問題は、モックが何かを返さず、モックを呼び出すと、ここで割り当てた値が上書きされたときに始まります

let result = {};
于 2016-09-26T14:36:18.810 に答える