2016-09-26 5 views
0

私のアプリケーションコードでMySQLのINSERT結果:私はそれが言うまさにません同じクラスの_getByIdメソッドを持っているテストテストへのNode.js/Sinon

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); 
} 

...

そして、 (アヴァを通じて実行されている)私の現在のテスト:

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のベスト・オプションは何ですか?

答えて

0

私はあなたがその

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

のようなものを返し、テストで結果が値を持つことになります場合は、次のモックが何か

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

を返さないので、あなたが"Cannot read property 'insertId' of undefined"を持っていると思います期待どおりの結果が得られるかどうかを確認するために、期待どおりに使用できるはずです。

{ 
    username: "username" 
} 

この特定のテストでの問題は、モックが何かを返さず、モックを呼び出してここに割り当てた値をオーバーライドしたときに始まります。

let result = {}; 
関連する問題