Я хочу отделить свой модульный тестовый код от моего другого кода.Как использовать модули в ракетке?
Я ставлю тестовый код в один файл, а другой код в другой файл в том же каталоге:
Фактический код файла:
#lang racket
(provide
...procedure names...)
...procedures...
Тестовый файл кода:
#lang racket
(require rackunit)
(require "...filename of the actual code file...")
...some additional procedures...
...test suite with multiple test cases in it...
Затем я запускаю:
raco test test-code-filename
Однако это не работает, в первом тестовом примере при первом вызове процедуры, который не определен в файле тестового кода, он сообщает мне, что это несвязанный идентификатор.
Перед этой структурой я также попытался использовать комбинации (module
и (module+
в файлах, но эта же проблема возникла.
Каким-то образом я, кажется, не понял модули правильно, прочитав документацию. Как я могу достичь этого разделения кода (разделив его в двух файлах)?
Я должен был сделать это более ясным в своем собственном ответе, что я использую только '(все-определил)', потому что я действительно написал тесты для каждой определенной процедуры. Я не хотел загромождать код в своем ответе всеми именами процедур. Конечно, я мог бы перечислить их все, но когда я сделал это без дополнительных круглых скобок, они всегда были неопределенными в моем тестовом коде. Я не уверен, почему ваш пример работает, потому что это почти то же самое, что я пытался раньше, за исключением того, что я увеличивал с помощью '(+ x 1)'. Я изменю свой код и проверю, работает ли он снова. – Zelphir
Да, ваша структура кода работает. Я не знаю, что еще происходило в моем исходном коде, что вызвало эту проблему. Благодарю. – Zelphir