1

假设我有一个 hello_name.pl:

greeting (Name): -
   write ('hello'),
   write (Name),
   writeln ('!').

我想在我的 plunit 中放入类似的东西

catch_output (greeting ('Moncho'), ConsoleOutput),
  assertion ('hello Moncho!' =:= ConsoleOutput).
4

1 回答 1

3

如果您使用的是

请参阅:with_output_to/2

注意:with_output_to/2 是在 SWI-Prolog 中使用 C 实现的,因此不能作为 Prolog 代码移植。

?- with_output_to(string(Output),(write('hello'),write('Rusian'),write('!'))), 
   assertion( Output == "helloRusian!").

更正您的代码并使用SWI-Prolog 单元测试

greeting(Name) :-
   write('hello'),
   write(Name),
   writeln('!').

:- begin_tests(your_tests).

test(001, Output == 'helloMoncho!\n') :-
    with_output_to(atom(Output), greeting('Moncho')).

:- end_tests(your_tests).
于 2020-01-18T22:34:39.443 回答