2016-09-26 31 views
0

我的應用程序代碼進行測試:測試MySQL的INSERT結果與Node.js的/興農

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方法...

而且我目前的測試(通過艾娃運行):

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"。用Sinon測試這個create方法會返回一個新創建的「用戶」,我的最佳選擇是什麼?

回答

0

我認爲你有"Cannot read property 'insertId' of undefined"因爲以下模擬不返回東西

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

如果返回類似的東西

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

,並在測試結果將具有值你應該可以使用expect來檢查你是否有預期的結果:

{ 
    username: "username" 
} 

在這個特定的測試開始時模擬不返回的東西,也叫模擬壓倒了,你在這裏分配

let result = {}; 
值的問題