Проблема Scala с ожиданиями jMock и возвращением значения из макета - PullRequest
2 голосов
/ 08 июля 2010

решаемая.IntelliJ не подчеркнул, что мой импорт был неполным.

Привет,

У меня есть простая программа Scala, которую я пытаюсь разработать с использованием jMock.Установка базовых ожиданий работает хорошо, но по какой-то причине 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))

Мне кажется, что Scala ожидает, что статический метод jMock returnValueval?Что мне здесь не хватает?

1 Ответ

2 голосов
/ 08 июля 2010

Вы уверены насчет ';'?

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

может работать лучше.

В в этом примере вы видите строку вроде:

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

со следующим комментарием:

Укажите, какое возвращаемое значение должно быть в том же выражении, задав «волю» как инфиксный оператор Scala.
В Java-эквиваленте мы должны были бы сделать отдельный вызов метода (который наша любимая IDE может настаивать на следующей строке!)

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

ОП объясняет это сам:

статический метод returnValue не был виден, поэтому ошибки.
А метод will просто записывает действие для последней фиктивной операции, поэтому он может быть в следующей строке или после точки с запятой:)

import org.jmock.Expectations 
import org.jmock.Expectations._ 
... 
context.checking( 
  new Expectations {
    { oneOf (nodeCtx).getParameter("FilenameRegex") will( returnValue(".*\\.data") ) }
  }
) 
...