2016-11-11 2 views
2

나는 데이터베이스 드라이버를 조롱하는 간단한 기본 예제를 만들려고로 정의되지 않은 속성 쿼리를 래핑하는 시도는 (나중에 테스트에 사용되는) : 형식 오류 : 기능

'use strict'; 
import mysql from 'mysql'; 
import sinon from 'sinon'; 

let mock = sinon.mock(mysql); 

mock.expects('query').withExactArgs(`DROP DATABASE IF EXISTS myDatabase`).yields({ "fieldCount": 0, "affectedRows": 1, "insertId": 0, "serverStatus": 258, "warningCount": 0, "message": "", "protocol41": true, "changedRows": 0 }); 

mysql.query('DROP DATABASE IF EXISTS myDatabase'); 

내가 오류를 얻을 :

TypeError: Attempted to wrap undefined property query as function 
+1

당신이 다음 connection.query 호출 할 수있는 연결을 반환 mysql.createConnection()를 사용하는 (https://www.npmjs.com/package/mysql#introduction)에서 [문서]에서처럼 보인다 . 비록 내가 너무 쉬울 수 있도록 노드 mysql에 익숙하지 않지만. –

+0

@ProfessorAllman 당신이 정확했다, 대답을 게시하십시오 :) –

답변

0

mysql.createConnection()을 사용하여 connection.query를 호출 할 수있는 연결을 반환하는 것처럼 보입니다.

'use strict'; 
import mysql from 'mysql'; 
import sinon from 'sinon'; 

let mock = sinon.mock(mysql.createConnection()); 

mock.expects('query').withExactArgs(`DROP DATABASE IF EXISTS myDatabase`).yields({ "fieldCount": 0, "affectedRows": 1, "insertId": 0, "serverStatus": 258, "warningCount": 0, "message": "", "protocol41": true, "changedRows": 0 }); 

mysql.query('DROP DATABASE IF EXISTS myDatabase');