2

解決しました。IntelliJ は、インポートが不完全であるという事実を強調しませんでした。

やあ、

jMock を使用して開発しようとしている単純な Scala プログラムがあります。基本的な期待値の設定はうまく機能しますが、何らかの理由で Scala はモック オブジェクトから値を返そうとする私の試みを理解できません。私のmavenビルドは次のエラーを吐き出します

TestLocalCollector.scala:45: error: not found: value returnValue
one (nodeCtx).getParameter("FilenameRegex"); will( returnValue(regex))
                                                   ^

そして、それぞれのコードスニペットは

@Before def setUp() : Unit = { nodeCtx = context.mock(classOf[NodeContext]) }
...
// the value to be returned
val regex = ".*\\.data"
...
// setting the expectations
one (nodeCtx).getParameter("FilenameRegex"); will( returnValue(regex))

私には、静的 jMock メソッドreturnValueval?になることを Scala が期待しているように思えます。ここで何が欠けていますか?

4

1 に答える 1

2

;」についてよろしいですか?

one (nodeCtx).getParameter("FilenameRegex") will( returnValue(regex))

うまくいくかもしれません。

このでは、次のような行が表示されます。

  expect {
    one(blogger).todayPosts will returnValue(List(Post("...")))
  }

次のコメントとともに:

"will" を Scala 中置演算子として定義することにより、同じ式で戻り値がどうあるべきかを指定します。
同等の Java では、別のメソッド呼び出しを行う必要があります (私たちのお気に入りの IDE は、次の行に置くことを主張するかもしれません!)

  one(blogger).todayPosts; will(returnValue(List(Post("..."))))
                         ^
                         |
                         -- semicolon only in the *Java* version

OPはそれを自分で説明しています:

returnValue静的メソッドが表示されなかったため、エラーが発生しました。
そして、willメソッドは最新のモック操作でアクションを記録するだけです。そのため、次の行またはセミコロンの後にある可能性があります:)

import org.jmock.Expectations 
import org.jmock.Expectations._ 
... 
context.checking( 
  new Expectations {
    { oneOf (nodeCtx).getParameter("FilenameRegex") will( returnValue(".*\\.data") ) }
  }
) 
于 2010-07-08T06:32:02.970 に答える