3
与えられたインタフェースには、FSharpスタイルの関数があります。NSubstituteとFSharp - FSharp関数をモックする
type IUseless =
abstract member Listify: string -> int -> string list
どのように機能を模擬しますか?
let substitute = NSubstitute.Substitute.For<IUseless>()
substitute.Listify.Returns(??? what would even go here ???)
私は(それはそれが何を表すかのようなものだが)、通常の方法、または関数が含まれている値のようにそれを模擬できることを期待していません。
誰かが正常に.NETのmockingの典型的なライブラリでFSharp関数を嘲笑したのなら、私は不思議です。
インラインインターフェイスの実装(通常は[オブジェクト式](https://fsharpforfunandprofit.com/posts/object-expressions/)と呼ばれています)を使用するための提案に同意しました。一般に、F#コードを書くときには、単体テストを動作させるために通常3ダースのフープにジャンプする必要はありません。モック、スタブ、依存関係注入...あなたが純粋な関数コードを書いているなら、それはすべて方程式を単純化します。 Mark Seemannは、この件に関して、多くの[良いブログ投稿](http://blog.ploeh.dk/tags/#Unit%20Testing-ref)を書いています。 – rmunn
'オブジェクト式 'を使用した場合、インターフェイスのすべてのメンバーを実装する必要はありませんか? –
はい、そうです。それはあなたのインターフェースを小さくしなければならない理由の1つです。オブジェクト指向の人々でさえこのことをお勧めします。 –