2017-08-27 18 views
0

春のブートを使用しています。私はラクダを追加しました。簡単なキャメルテストが失敗し、メッセージが受信されない

私はシンプルなラクダのルートを設定している:私はこのルートの簡単なテストを作成しようとすると

import org.apache.camel.builder.RouteBuilder; 
import org.springframework.stereotype.Component; 

@Component 
public class MyRoute extends RouteBuilder { 

    @Override 
    public void configure() throws Exception { 
    from("file://in").to("file://out"); 
    } 
} 

@RunWith(CamelSpringBootRunner.class) 
@SpringBootTest 
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) 
public class MyRouteTest extends CamelTestSupport { 

    @Autowired 
    private CamelContext camelContext; 

    @Produce(uri = "file://in") 
    private ProducerTemplate producerTemplate; 

    @EndpointInject(uri = "mock:file://out") 
    private MockEndpoint mockEndpoint; 

    @Test 
    public void routeTest() throws Exception { 
    mockEndpoint.expectedMessageCount(1); 
    producerTemplate.sendBody("Test"); 
    mockEndpoint.assertIsSatisfied(); 
    } 
} 

それは

mock://file://out Received message count. Expected: <1> but was: <0> 

わからないと失敗しますここで何が問題になるかもしれない。私はポイントから私のルートとしてuriを持っていて、EndpointInjectと偽のuriとエンドポイントに嘲笑している生産者のテンプレートがありますか?

+0

Configurを?! e [AdviceWith](http://camel.apache.org/advicewith.html) 詳細な例:http://opensourceconnections.com/blog/2014/04/24/correctly-using-camels-advicewith-in-unit - テスト/ – mgyongyosi

+0

試した、同じエラー、奇妙な – George96

答えて

0

:ファイル:例えばアウト

+0

thx、that worked! まだ@SpringBootTestアノテーションで動作しない理由がわかりません – George96

0

私が誤解されていない場合は、出力エンドポイントを嘲笑していますが、エンドポイントエンドポイントはファイルエンドポイントです。メッセージを送信するときには、ファイルエンドポイントがポーリングしている間にメッセージをドロップする必要があります。それ以外の場合は、それも嘲笑する必要があります。

固定
+0

sryが混乱していると確信していないあなたのアイデアです。私はこのproducerTemplate.sendBody( "Test")と思う。ルートにメッセージを入れますか? – George96

+0

はい、ルートは直接エンドポイントではなくファイルエンドポイントでリッスンしています。あなたのエラーは、1つのメッセージを期待しているが、何も受信していないと言っています。あなたのファイルに模擬エンドポイントを追加してください。代わりに、エンドポイントのmock:file:inにメッセージを送ります。あるいは、replaceFromWith()を使用します。こちらをご覧くださいhttps://stackoverflow.com/questions/35032612/camel-mock-test-using-file-as-input –

1

ではなく、100%

私は特定の作成に

from("file://in").to("mock:out"); 

そして、私のテストオーバーライドで

@Override 
    protected RoutesBuilder createRouteBuilder() throws Exception { 
    return new MyRoute(); 
    } 

に本物の1

from("file://in").to("file://out"); 

からのルートを変更した場合ルート

すべてのうちで最も奇妙です!削除する必要がありました:

@SpringBootTest 

とその後

private CamelContext camelContext; 

をし、それが仕事を始めました!

残念ながら私が必要としているものではありませんが、まだ修正が必要なことがあります。私は本当のプロダクトルートを使用したいと思います!

from("file://in").to("file://out"); 

とルート上の助言を使用しますが、それを嘲笑、モック で試したことのない、可能な場合:ファイル://アウトテストでは、それは:( 仕事didntはしても、それは@で動作しません。 SpringBootTest ???非常に奇妙なあなたは

@Override 
    public String isMockEndpoints() { 
    return "*"; 
    } 

このすべてenpointsを模擬する必要があり、その後、あなたがモックを使用することができます追加する必要があり

関連する問題