Confused about testing web applications

54 views
Skip to first unread message

Comrade SparklePony

unread,
May 30, 2019, 2:24:12 PM5/30/19
to Racket Users
Hello,

    I'm new to Racket, and to gain facility with it I have been trying to write small webapps, i.e. a simple calculator, using the built-in web framework. However, I have found myself stuck when trying to implement tests for some of the functions the webapp provides-- I am not sure how to test functions that process a request. Specifically, I'm trying to write tests for an "process-request" function which turns a request into a Calculator struct. I'm confused if this is one of the unlikely scenarios in which a request struct needs to be made, or if there is a better way to generate a request with certain bindings.

    If a request struct does need to be made, can I just place an arbitrary instance of the required data type in each field (except for bindings/raw-promise)? I can just place a list of binding:form in the bindings/raw-promise field, right?

    I apologize if I missed something obvious or this is an obnoxious noob question.

    Some information that may or may not be helpful:
    - Racket experience so far: completed HTDP, webapp tutorial.
    - Sources consulted so far:
        - Racket documentation on HTTP, formlets, testing servlets, rackunit, contracts, and delayed evaluation.
        - Racket webapps hosted on github (I couldn't find any that had used tests)

Thank you.

Jay McCarthy

unread,
May 30, 2019, 2:29:10 PM5/30/19
to Comrade SparklePony, Racket Users
You may be interesting in the `web-server/test` library:

https://docs.racket-lang.org/web-server/test.html

--
Jay McCarthy
Associate Professor @ CS @ UMass Lowell
http://jeapostrophe.github.io
Vincit qui se vincit.
> --
> You received this message because you are subscribed to the Google Groups "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to racket-users...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/637db0d5-47a8-4fb6-a2a5-b79fc58a2672%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Jesse Alama

unread,
Jun 1, 2019, 1:17:00 AM6/1/19
to Jay McCarthy, Comrade SparklePony, Racket Users
In addition to Jay's suggestion, if you're doing something JSONy (that
is, if your HTTP response bodies are JSON) consider using Riposte
(https://riposte.in). It's a DSL for testing such web applications. (But
only if you're serving JSON. Riposte currently doesn't help if you're
serving up HTML or something else.)
> https://groups.google.com/d/msgid/racket-users/CAJYbDamg1ZMmYKFbZ6d6LLmmbdR2wD1Pzq_cmRL5a3Zu%2BksYGg%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages