title: Node Express testing mock res.status(status).json(obj)
body: <p>I get the following error when trying to test my method:</p>
  
  <blockquote>
    <p>TypeError: Cannot call method 'json' of undefined</p>
  </blockquote>
  
  <p>Below is my code, i'd get the same error for 'status' if i remove res.status from the test method.</p>
  
  <p>How do i define 'json' so i dont get an exception thrown at: </p>
  
  <blockquote>
    <p>res.status(404).json(error);</p>
  </blockquote>
  
  <p>when testing this function.</p>
  
  <p><strong>stores.js</strong></p>
  
  <pre><code>{ //the get function declared above (removed to ease of reading)
          // using a queryBuilder
          var query = Stores.find();
          query.sort('storeName');
          query.exec(function (err, results) {
              if (err)
                  res.send(err);
              if (_.isEmpty(results)) {
                  var error = {
                      message: "No Results",
                      errorKey: "XXX"
                  }
                  res.status(404).json(error);
                  return;
              }
              return res.json(results);
          });
      }
  </code></pre>
  
  <p><strong>storesTest.js</strong></p>
  
  <pre><code>it('should on get call of stores, return a error', function () {
  
      var mockFind = {
          sort: function(sortOrder) {
              return this;
          },
          exec: function (callback) {
              callback('Error');
          }
      };
  
      Stores.get.should.be.a["function"];
  
      // Set up variables
      var req,res;
      req = {query: function(){}};
      res = {
          send: function(){},
          json: function(err){
              console.log("\n : " + err);
          },
          status: function(responseStatus) {
              assert.equal(responseStatus, 404);
          }
      };
  
      StoresModel.find = sinon.stub().returns(mockFind);
  
      Stores.get(req,res);
  </code></pre>