Ваши тестовые примеры должны точно объяснить, что вы хотите сделать.
Это способ объяснить, используя код, предполагаемое использование написанных вами функций.
В вашем конкретном случае я, очевидно, не могу вам помочь, потому что это именно то, чего не хватает в вашем коде: значение, которое оно должно иметь.
Но я все еще могу объяснить, как писать модульные тесты в Racket:
;; This is a function you would write.
;; It does something, but it's not completely obvious
;; how to use it.
(define (find type basket)
(let ([obj (assq type basket)])
(and obj
(cadr obj))))
;; By creating a test module, you add code that describes
;; how to use the functions in this file.
(module+ test
(require rackunit)
;; This is some sample data.
;; It's useful to understand what kind of data
;; your functions are expected to process.
(define basket '((bread baguette)
(fruit ananas)
(fruit banana)
(vegetable carrot)
(misc fork&knife)))
;; Here we call the function and show the expected result.
;; It's now clear how to use it.
(check-equal? (find 'fruit basket) 'ananas)
(check-equal? (find 'vegetable basket) 'carrot)
(check-false (find 'fruit '()))
)
Вы можете запустить эти тесты, используя raco
:
> raco test myfile.rkt
raco test: (submod "myfile.rkt" test)
3 tests passed