2017-06-14 24 views
0

私はJestを使ってfbgraphライブラリを呼び出す関数をテストしようとしています。毎回アクセストークンが変わるので、私はfbgraphの関数を嘲笑したいと思います。しかし、私のテストは、嘲笑された関数のコールバックを待っているタイムアウトとして完了することはありません。jestを使用してライブラリからコールバックを嘲笑

fbgraphへの呼び出しをモックするモジュールのテストを書くにはどうすればよいですか?例を簡単にするために(私は、文字列「成功への戻り値を編集した)

機能がテストされている:。

class Users { 

    save(accessToken, callback) { 

     var graph = require('fbgraph'); 

     graph.setAccessToken(accessToken); 

     graph.get("me?fields=email", function(err, res) { 
      callback(null,"Success"); 
     }); 
    } 
} 

module.exports = Users; 

テストモジュール:

const Users = require('../models/users'); 

jest.mock('fbgraph'); 

let users = new Users(); 

test('If an access token is passed, user.save should return success', done => { 
    function callback(err, data) { 
    expect(data).toBe('Success'); 
    done(); 
    } 

    users.save('test', callback); 
}); 

を私はその後ました

:私はちょうどテスト自体に何かをモックう
const fbgraph = jest.genMockFromModule('fbgraph'); 

function get(querystring,callback) 
{ 
    return callback(null,'Success'); 
} 

module.exports = fbgraph; 

答えて

0

嘲笑
var graph = require('fbgraph'); 
const Users = require('../models/users'); 

jest.mock('fbgraph',()=>({ 
    setAccessToken: jest.fn(), 
    get: (url, fn) => fn() 
})); 

let users = new Users(); 

test('If an access token is passed, user.save should return success',() => { 
    const callback = jest.fn() 
    users.save('test', callback); 
    expect(callback).toHaveBeenCalledWith('Success') 
    expect(graph.setAccessToken).toHaveBeenCalledWith('test') 
}); 
関連する問題