3

Mock.Expect私が見つけた例はどれTimesも、0 または 1 以外を使用していません (一度もありません)。Foq.Usage.fsx の既存のテストの 1 つを変更して、0 または 1 ではない何かを試行しましたが、機能させることができません。

誰かが何か間違っていると思いますか?

let [<Test>] ``expect method is called the specified number of times`` () =
    // Arrange
    let xs = Mock.Of<System.Collections.Generic.IList<int>>()
    // Assert (setup)
    Mock.Expect(<@ xs.Contains(0) @>, never)
    Mock.Expect(<@ xs.Contains(1) @>, once)
    Mock.Expect(<@ xs.Contains(2) @>, exactly 2)
    // Act
    xs.Contains(1) |> ignore
    xs.Contains(2) |> ignore
    xs.Contains(2) |> ignore
    // Assert
    verifyAll xs
4

3 に答える 3

1

ありがとう、ルーベン。私は同意します、明示的なs が最適ですが、(あなたの提案でも)誰かが/を使用したいverify場合に備えて、以下のコードが機能します。ExpectverifyAll

let [<Test>] ``expect method is called the specified number of times`` () =
    // Arrange
    let xs = Mock.Of<System.Collections.Generic.IList<int>>()
    // Act
    xs.Contains(1) |> ignore
    xs.Contains(2) |> ignore
    xs.Contains(2) |> ignore
    // Assert
    Mock.Expect(<@ xs.Contains(0) @>, never)
    Mock.Expect(<@ xs.Contains(1) @>, once)
    Mock.Expect(<@ xs.Contains(2) @>, exactly 2)
    verifyAll xs
于 2014-01-29T00:22:54.203 に答える
1

コメントで説明したように、これはあなたの質問には答えませんが...私はこれを書きます(これは機能します):

let xs = Mock.Of<System.Collections.Generic.IList<_>>()
// Act
xs.Contains(1) |> ignore
xs.Contains(2) |> ignore
xs.Contains(2) |> ignore
// Assert
verify <@ xs.Contains(0) @> never
verify <@ xs.Contains(1) @> once
verify <@ xs.Contains(2) @> <| exactly 2
于 2014-01-29T00:11:40.770 に答える