次のようなモジュール「sitescollection」があります。
var site = require('./site'); // <- this should be stubbed
var sitesCollection = function(spec) {
var that = {};
that.sites = {};
that.findOrCreateById = function(id) {
if (typeof(that.sites[id]) == "undefined") {
that.sites[id] = site({id: id}); // <- its used here
}
return that.sites[id];
};
return that;
};
module.exports = sitesCollection;
したがって、sitescollection 内では、site はエクスポートされないモジュールです。しかし、コード内では、私はそれを使用しています。今、#findOrCreateById() のジャスミン仕様を書いています。
findOrCreateBy() 関数を指定したいと思います。しかし、仕様は実装から独立している必要があるため、site() 関数をスタブしたいと考えています。スパイされたメソッドをどこに作成する必要がありますか?
var sitescollection = require('../../lib/sitescollection');
describe("#findOrCreateById", function() {
it("should return the site", function() {
var sites = sitescollection();
mysite = { id: "bla" };
// Here i want to stub the site() method inside the sitescollection module.
// spyOn(???,"site").andRetur(mysite);
expect(sites.findOrCreateById(mysite.id)).toEqual(mysite);
});
});