2016-04-26 9 views
0

モックdismissKeyboardモジュールは:RN私は、次のモジュールをインポートしています私のRNアプリケーションで

const dismissKeyboard = require('dismissKeyboard');/
import dismissKeyboard from 'dismissKeyboard'; 

私は次のエラーを取得するテストを実行している:

Error: Cannot find module 'dismissKeyboard' 
    at Function.Module._resolveFilename (module.js:339:15) 
    at Function.Module._load (module.js:290:25) 
    at Module.require (module.js:367:17) 
    at require (internal/module.js:16:19) 
    at Object.<anonymous> (InputAccessory.js:12:25) 
    at Module._compile (module.js:413:34) 
    at loader (/Users/user/dev/app/node_modules/babel-register/lib/node.js:126:5) 

私はsinonで試してみました

before(() => { 
    sinon.stub('dismissKeyboard',() => {}); 
    }); 

また、モッキー:

mockery.enable(); 
mockery.mock('dismissKeyboard',() => null)/
mockery.registerMock('dismissKeyboard',() => null) 

しかし、私はまだ同じエラーが発生します。

提案がありますか? dismissKeyboardモジュールはRNとともに出荷されますが、何とかして別途必要となります。私はモカを使用しています。

更新

私はそれがどんな違いはありませんでした嘲笑しようと、今、私はモジュールについての警告を取得していた場合でも、このフルパスを使用したが、dismissKeyboardが

react-native/Libraries/Utilities/dismissKeyboard.js

から来ていることがわかりましたこのjsファイル内。

答えて

1

requireを使用すると、これは簡単にmock-requireで嘲笑することができます。しかし、es6のインポートのために働くようには見えません。

var mock = require('mock-require'); 

mock('dismissKeyboard', function() { 
    return 'I\'m a mocked function'; 
}); 

var dismissKeyboard = require('dismissKeyboard'); 

console.log(dismissKeyboard()); 

すべてのあなたのテスト全体でこれをモックとしたい場合は、セットアップファイルに追加(またはすでに持っていない場合は作成)などのようなテストを実行しているときにそれを使用します。

mocha --require setup.js tests 
関連する問題