How do i test for http status code 500 in sinon?












0















I have the following code in my main class in nodejs.



I am doing unit testing using sinon.



How do I test for this portion of the code
res.status(error.status || 500);



I am able to test the error.status portion by call an invalid url which leads to the error handling above, 404, but how do i get to the 500 flow?



main.js:



...
//importing route
var routes = require('./api/rest/webservRest');

//register the route
routes(app);

//reached here throw error 404, means no routes to handle inc. request
app.use((req, res, next) => {
const error = new Error('Not found');
error.status = 404;

next(error);
});

// catch errors
app.use((error, req, res, next) => {

log.error("ERROR - " + req.url + " - " + error.message);

res.status(error.status || 500);
res.json({
error: {
message: error.message
}
});
});

//start application
module.exports = app.listen(port, () => {
log.info('Module - RESTful API server started on: ' + port);
});









share|improve this question



























    0















    I have the following code in my main class in nodejs.



    I am doing unit testing using sinon.



    How do I test for this portion of the code
    res.status(error.status || 500);



    I am able to test the error.status portion by call an invalid url which leads to the error handling above, 404, but how do i get to the 500 flow?



    main.js:



    ...
    //importing route
    var routes = require('./api/rest/webservRest');

    //register the route
    routes(app);

    //reached here throw error 404, means no routes to handle inc. request
    app.use((req, res, next) => {
    const error = new Error('Not found');
    error.status = 404;

    next(error);
    });

    // catch errors
    app.use((error, req, res, next) => {

    log.error("ERROR - " + req.url + " - " + error.message);

    res.status(error.status || 500);
    res.json({
    error: {
    message: error.message
    }
    });
    });

    //start application
    module.exports = app.listen(port, () => {
    log.info('Module - RESTful API server started on: ' + port);
    });









    share|improve this question

























      0












      0








      0








      I have the following code in my main class in nodejs.



      I am doing unit testing using sinon.



      How do I test for this portion of the code
      res.status(error.status || 500);



      I am able to test the error.status portion by call an invalid url which leads to the error handling above, 404, but how do i get to the 500 flow?



      main.js:



      ...
      //importing route
      var routes = require('./api/rest/webservRest');

      //register the route
      routes(app);

      //reached here throw error 404, means no routes to handle inc. request
      app.use((req, res, next) => {
      const error = new Error('Not found');
      error.status = 404;

      next(error);
      });

      // catch errors
      app.use((error, req, res, next) => {

      log.error("ERROR - " + req.url + " - " + error.message);

      res.status(error.status || 500);
      res.json({
      error: {
      message: error.message
      }
      });
      });

      //start application
      module.exports = app.listen(port, () => {
      log.info('Module - RESTful API server started on: ' + port);
      });









      share|improve this question














      I have the following code in my main class in nodejs.



      I am doing unit testing using sinon.



      How do I test for this portion of the code
      res.status(error.status || 500);



      I am able to test the error.status portion by call an invalid url which leads to the error handling above, 404, but how do i get to the 500 flow?



      main.js:



      ...
      //importing route
      var routes = require('./api/rest/webservRest');

      //register the route
      routes(app);

      //reached here throw error 404, means no routes to handle inc. request
      app.use((req, res, next) => {
      const error = new Error('Not found');
      error.status = 404;

      next(error);
      });

      // catch errors
      app.use((error, req, res, next) => {

      log.error("ERROR - " + req.url + " - " + error.message);

      res.status(error.status || 500);
      res.json({
      error: {
      message: error.message
      }
      });
      });

      //start application
      module.exports = app.listen(port, () => {
      log.info('Module - RESTful API server started on: ' + port);
      });






      node.js unit-testing sinon






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 8:33









      shadowshadow

      115110




      115110
























          1 Answer
          1






          active

          oldest

          votes


















          0














          500 will be caught if error.status return falsy value such as false or undefined.



          So perhaps you can stubing the error using Sinon as below:



          const error = {
          status: false,
          message: 'something'
          }


          or



          const error = {
          message: 'something'
          }


          Hope it helps






          share|improve this answer
























          • I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

            – shadow
            Dec 3 '18 at 5:52











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53295913%2fhow-do-i-test-for-http-status-code-500-in-sinon%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          500 will be caught if error.status return falsy value such as false or undefined.



          So perhaps you can stubing the error using Sinon as below:



          const error = {
          status: false,
          message: 'something'
          }


          or



          const error = {
          message: 'something'
          }


          Hope it helps






          share|improve this answer
























          • I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

            – shadow
            Dec 3 '18 at 5:52
















          0














          500 will be caught if error.status return falsy value such as false or undefined.



          So perhaps you can stubing the error using Sinon as below:



          const error = {
          status: false,
          message: 'something'
          }


          or



          const error = {
          message: 'something'
          }


          Hope it helps






          share|improve this answer
























          • I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

            – shadow
            Dec 3 '18 at 5:52














          0












          0








          0







          500 will be caught if error.status return falsy value such as false or undefined.



          So perhaps you can stubing the error using Sinon as below:



          const error = {
          status: false,
          message: 'something'
          }


          or



          const error = {
          message: 'something'
          }


          Hope it helps






          share|improve this answer













          500 will be caught if error.status return falsy value such as false or undefined.



          So perhaps you can stubing the error using Sinon as below:



          const error = {
          status: false,
          message: 'something'
          }


          or



          const error = {
          message: 'something'
          }


          Hope it helps







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 15 '18 at 0:00









          deerawandeerawan

          2,34141425




          2,34141425













          • I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

            – shadow
            Dec 3 '18 at 5:52



















          • I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

            – shadow
            Dec 3 '18 at 5:52

















          I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

          – shadow
          Dec 3 '18 at 5:52





          I still don't get it. Does it mean that i need to stub app.use((error, req, res, next)?

          – shadow
          Dec 3 '18 at 5:52


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53295913%2fhow-do-i-test-for-http-status-code-500-in-sinon%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()