如何将函数添加到可以访问其variables的JavaScript对象

我正在尝试做一些JavaScripttesting驱动的开发,并想用模拟replace一个道。

比方说,我有一个对象myObject有一个私人的VAR DAO,我想创build一个setter:

var dao = new RealDao(); function funcUsesDao() { dao.doStuff(); } 

然后在另一个文件中,我有一个这个对象的实例的句柄,并希望添加一个setter,所以我可以做到以下几点:

 var mockDao = {function doStuff() { /*mock code */}}; myObject.setDao(mockDao); myObject.funcUsesDao(); should use mock dao 

环境细节是这是node.js和我有一个句柄的对象是通过做var myObject = require('../myObject');

您将使用该类的构造函数,将dao设置为RealDao,然后在setDao中将该dao设置为新的dao。 或者在构造函数中,您将对dao进行引用,并在null上将其分配给新的RealDao()。 (至less,这是我的理解,人们如何通常分配新的接口进行testing..通过构造函数)

 //something like this function Dao(interface){ this.dao = interface || new RealDao(); } 

否则,你上面列出的是准确的。 你只需要提供你在代码中指定的setDao方法。