2016-09-26 2 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); 
} 

...

그리고 내 현재 테스트 (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과 최선의 방법은 무엇입니까?

답변

0

나는 당신이 값을가집니다 결과 그

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

같은 시험에서 뭔가를 반환 할 경우 다음과 같은 모의 뭔가를

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

를 반환하지 않기 때문에 당신이 "Cannot read property 'insertId' of undefined"을 가지고 있다고 생각 예상 결과를 얻었는지 확인하려면 예상대로 사용할 수 있어야합니다.

{ 
    username: "username" 
} 

모의 당신이 여기

let result = {}; 
를 할당 된 값 모의 오버라이드를 호출도 뭔가를 반환하지 않으며,이 특정 테스트 시작에 문제
관련 문제