I am using intern as testing framework and sinon for mocking the data. I dont want to hit the server for http requests during unit tests. So I have created a module that returns the data in deferred.promise as shown below:
define(["require", ..], function(require, ...) {
function fakerequest(){
dfd = new Deferred();
setTimeout(function(){
deferred.resolve(data);
},100);
return dfd.promise;
}
return fakerequest;
});
And this is the original AMD request module that hits an external server with http request:
define(["require", ..], function(require, ...) {
function request(){
dfd = new Deferred();
...
return dfd;
}
return request;
});
And this the module that I wanted to test. And it uses the request function for some data:
define(["require", ..], function(require, ...) {
var QuerySomething = {
execute: function(){
...
return request();
};
}
return QuerySomething;
});
Now I want to test the QuerySomething module but I dont want it to use the original request function but instead use the fakeRequest function. So in my intern test, I used sinon to stub the original request with the fake one.
registerSuite({
name: 'QuerySomething',
setup: function(){
stub = sinon.stub(request, "request", fakeRequest);
},
teardown: function () {
stub.restore();
},
execute: function(){
queryTask.execute(query).then(function(results){
console.log(results);
});
}
But I am getting this error:
TypeError: Attempted to wrap undefined property request as function
Can someone please let me know how to mock the dependency function?