rspec: how to test redis publish











up vote
0
down vote

favorite












I'm using the 'realtime' gem for realtime message.



Given something like(code from offical website)



# if using redis:
$redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json


How can I test this code with rspec?










share|improve this question


























    up vote
    0
    down vote

    favorite












    I'm using the 'realtime' gem for realtime message.



    Given something like(code from offical website)



    # if using redis:
    $redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json


    How can I test this code with rspec?










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I'm using the 'realtime' gem for realtime message.



      Given something like(code from offical website)



      # if using redis:
      $redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json


      How can I test this code with rspec?










      share|improve this question













      I'm using the 'realtime' gem for realtime message.



      Given something like(code from offical website)



      # if using redis:
      $redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json


      How can I test this code with rspec?







      ruby-on-rails ruby-on-rails-5 rspec3






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 7 at 7:35









      hu huang

      82




      82
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          You can add a spy to $redis to assert that publish gets called with certain arguments like so:



          expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`


          The last part, /hello world.*recipient_user_ids/ is just an example of a regular expression you could use to match the JSON string you're providing as a second argument to publish. You could use a custom matcher there or any other rspec argument matcher that serves your purpose.






          share|improve this answer





















            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',
            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%2f53185176%2frspec-how-to-test-redis-publish%23new-answer', 'question_page');
            }
            );

            Post as a guest
































            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            You can add a spy to $redis to assert that publish gets called with certain arguments like so:



            expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`


            The last part, /hello world.*recipient_user_ids/ is just an example of a regular expression you could use to match the JSON string you're providing as a second argument to publish. You could use a custom matcher there or any other rspec argument matcher that serves your purpose.






            share|improve this answer

























              up vote
              0
              down vote













              You can add a spy to $redis to assert that publish gets called with certain arguments like so:



              expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`


              The last part, /hello world.*recipient_user_ids/ is just an example of a regular expression you could use to match the JSON string you're providing as a second argument to publish. You could use a custom matcher there or any other rspec argument matcher that serves your purpose.






              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                You can add a spy to $redis to assert that publish gets called with certain arguments like so:



                expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`


                The last part, /hello world.*recipient_user_ids/ is just an example of a regular expression you could use to match the JSON string you're providing as a second argument to publish. You could use a custom matcher there or any other rspec argument matcher that serves your purpose.






                share|improve this answer












                You can add a spy to $redis to assert that publish gets called with certain arguments like so:



                expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`


                The last part, /hello world.*recipient_user_ids/ is just an example of a regular expression you could use to match the JSON string you're providing as a second argument to publish. You could use a custom matcher there or any other rspec argument matcher that serves your purpose.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 7 at 12:59









                jbielick

                660417




                660417






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53185176%2frspec-how-to-test-redis-publish%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest




















































































                    這個網誌中的熱門文章

                    Xamarin.form Move up view when keyboard appear

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Anylogic : not able to use stopDelay()