On this page:
top
up

9Testing ServletsπŸ”— i

The Web Server provides a simple facility for writing tests for Web servlets and dispatchers.

The core functionality allows a request to be sent to the servlet and the response captured:

This contract is equivalent to
(->* ()
#:raw?boolean?
#:headers?boolean? )
xexpr? ))))

It represents a function that accepts a request and returns the answer the servlet for that request. This interaction function has many possible calling patterns:
  • No arguments: a call to the root URL path with no bindings.

  • At least one argument: this may be a string, URL, or a request data structure.

  • Two arguments: the first argument must be a string or a URL, but the second argument can specify the request bindings.

  • The optional #:raw? keyword controls whether an X-expression or a byte string is returned as a result.

  • The optional #:headers? keyword controls whether the headers are included in the return value as a byte string. When this is used, the two returns are returned in a cons.

procedure

( make-servlet-tester servlet)tester/c

This function accepts a servlet function and provides a tester function as described above. It is equivalent to (make-dispatcher-tester (dispatch/servlet servlet)), so if you need custom arguments to dispatch/servlet , use make-dispatcher-tester .

This function accepts a dispatcher and provides a tester function as described above.

This facility is designed to be used in concert with a technique of extracting continuation URLs and relevant values; xml/path is one way to do this. Here is an extended example that tests an Add-Two-Numbers.com:

(define (test-add-two-numbers-s>)
(define x(random 500))
(define y(random 500))
(define r0(-s>))
(define k0(se-path* '(form#:action)r0))
(define i0(se-path* '(forminput#:name)r0))
(define r1
(-s>(format "~a?~a=~a"k0i0xs)
(define k1(se-path* '(form#:action)r1))
(define i1(se-path* '(forminput#:name)r1))
(define r2
(-s>(format "~a?~a=~a"k1i1ys)
(define n(se-path* '(p)r2))
(format "The answer is ~a"(+ xy))))
(prefix-in ex:add1:web-server/default-web-root/htdocs/servlets/examples/add)
(prefix-in ex:add2:web-server/default-web-root/htdocs/servlets/examples/add-v2))
(test-add-two-numbers
(make-servlet-tester ex:add1:start))
(test-add-two-numbers
(make-servlet-tester ex:add2:start))
top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /