Я пытаюсь написать тест для небольшой библиотеки. Я пишу, что (по сути) просто регистрируется в консоли.
Есть ли способ смоделировать функцию, например F #?
пример: в src / Lib / Lib.fs
module Lib
let print msg = printfn "Your message is: %s" msg
, затем в test / LibTest / Lib.fs
module LibTest
open NUnit.Framework
open FsUnit
[<Test>]
let ``should print what I expect``() =
print "test" |> should equal "Your message is: test"
Примечание: я знаю, что в настоящее время print
возвращает unit
- я ищу способ сделать утверждения о том, что передается в printfn
(или, в идеале, что отправляется в стандартный вывод, который меньше зависит от реализации).
IЯ пытался напрямую назначить фиктивную функцию для Printf.printfn
безрезультатно (очевидно, когда я думаю об этом).Возможно ли захватить вывод на консоль?Или издеваться над функцией printfn
(это детали реализации, но я могу жить с этим).