I, имеющие функцию Grails, где я использую отдельную тему:Grails блок тест + Thread
def testFunction() {
//.....
Thread.start() {
testService.somefunction()
}
//...
}
В тестовом модуле, я насмешливый сервисную функцию, как это:
def "test testfunction" {
//...
1 * testService.somefunction(_)
//..
}
Однако я получаю ошибку непревзойденных вызовов, потому что Spock не обнаружил, что метод был выполнен в отдельном потоке.
1 * testService.somefunction(_) (0 invocations)
Unmatched invocations (ordered by similarity):
Я попытался с помощью этого http://spock-framework.readthedocs.org/en/latest/new_and_noteworthy.html#polling-conditions, но не имели никакого успеха.
Обновленный включает пример кода:
void "test without errors"() {
def conditions = new PollingConditions(timeout: 15)
def cmdList = new ArrayList<CommandClass>()
parseService.parseFile(file, _) >> commandList
nextService.create(_) >> commandList
controller.controllerService = nextService
controller.controllerParseService = parseService
when:
controller.testFunction()
then:
conditions.eventually {
assert response.contentAsString == "SUCCESS"
}
}
Можете ли вы пройти в своем точном тестовом коде вместо «// ...». Это может помочь определить, в чем проблема. – th3morg
@ th3morg, это то, что я чувствовал конфиденциальность, но я уверен, что вышеприведенный фрагмент даст такую хорошую идею. Проблема связана с кодом внутри 'Thread.start {}' –
. Я не могу сказать, правильно ли вы настроили тест, не увидев весь тест. Вы даже можете предоставить полный тестовый код, а не функцию, которая является собственностью. Кроме того, были ли какие-то непревзойденные призывы? – th3morg