MockEndpoint не может запустить маршрут - PullRequest
0 голосов
/ 04 декабря 2018

Использование mock для запуска потокового маршрута Salesforce, как показано здесь не удается для следующего маршрута:

from("salesforce:AccountUpdateTopic?notifyForFields=ALL&notifyForOperations=ALL")  
.tracing().convertBodyTo(String.class).to("file:D:/tmp/")
.to("mock:output") 
.log("SObject ID: ${body}");

in

package org.apache.camel.component.salesforce;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.component.salesforce.internal.OperationName;
import org.junit.Test;

public class StreamingApiIntegrationTest extends AbstractSalesforceTestBase {

    @Test
    public void testSubscribeAndReceive() throws Exception {
        MockEndpoint mock = getMockEndpoint("mock:AccountUpdateTopic");
        mock.start();
        Thread.sleep(10000);
        mock.stop();
    }

    @Override
    protected RouteBuilder doCreateRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                // test topic subscription
                from("salesforce:AccountUpdateTopic?notifyForFields=ALL&notifyForOperations=ALL").tracing().convertBodyTo(String.class).to("file:D:/tmp/").to("mock:output").log("SObject ID: ${body}");
            }
        };
    }
}

Запуск этого теста не запускает маршрут (обновления не выбираются из Salesforce и не сохраняются в /tmp/).

Может ли макет запустить маршрут и ждать обновления от Salesforce?Есть ли более короткий пример, который позволяет тестировать маршруты Salesforce без использования пружины?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы неправильно поняли компонент Camel Mock .Насмешки не запускаются.Это просто конечные точки, которые записывают и утверждают полученные сообщения.

Чтобы запустить верблюжий маршрут, вы должны отправить ему сообщение.Вы можете сделать это легко, используя ProducerTemplate .

Именно эта строка из упомянутого вами примера делает именно это.

CreateSObjectResult result = template().requestBody(
        "direct:upsertSObject", merchandise, CreateSObjectResult.class);

template - это ProducerTemplate и requestBody способ отправки сообщения на конечную точку direct:upsertSObject и ожидания ответа.См. Javadocs ProducerTemplate для различных существующих подписей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...