私はプロジェクトのテスト自動化にCitrix Frameworkを使用するためにCitrus Frameworkを調査しています。 2つのWebサービスを実行したいのですが、名前をつけてみましょう:シトラスと同じポート上の異なるURLを持つ2つの模擬Webサービスを実行するには?
http://localhost:port/service1
http://localhosr:port/sercice2
そして、私のSUT(テスト対象システム)を呼び出してください。 SUTは上の両方の模擬サービス(service1 & service2)を同期して呼び出し、答えを返します。
私はそれを行うことができたが、別のポート上:
<citrus-ws:server id="helloMockService1"
port="${server.port1}"
servlet-mapping-path="/service1"
auto-start="true"
timeout="10000"
endpoint-adapter="genericResponseAdapter1" />
<citrus-ws:server id="helloMockService2"
port="${server.port2}"
servlet-mapping-path="/service2"
auto-start="true"
timeout="10000" />
私は、同じポートでそれを必要とします。私はタイプcom.citrus.messageのリクエストパラメータにURLを見つけるカント
<citrus:dispatching-endpoint-adapter id="dispatchingEndpointAdapter"
mapping-key-extractor="mappingKeyExtractor"
mapping-strategy="mappingStrategy"/>
<bean id="mappingStrategy"
class="com.consol.citrus.endpoint.adapter.mapping.SimpleMappingStrategy">
<property name="adapterMappings">
<map>
<entry key="service1" value-ref="genericResponseAdapter1"/>
<entry key="service2" value-ref="genericResponseAdapter2"/>
</map>
</property>
</bean>
<bean id="mappingKeyExtractor"
class="com.mycompany.citrus.CustomExtractor">
</bean>
..また、私のカスタムDispatchingEndpointAdapterを書いて、何とか要求メッセージからコンテキストパスを抽出しようとしましたが、成功しませんでした。メッセージ..
package com.mycompany.citrus;
import com.consol.citrus.endpoint.adapter.mapping.MappingKeyExtractor;
import com.consol.citrus.message.Message;
public class CustomExtractor implements MappingKeyExtractor{
@Override
public String extractMappingKey(Message request) {
// ther is no URL information in Message object!!!!!!!!!!!!
return "service1";
}
}
Citrus Frameworkで2つのモックサービスを同じポートで実行するにはどうすればよいですか?ペイロード自体ではなく、URLで区別したいと思います...(メッセージオブジェクトにペイロードが含まれているので、上記のカスタムMappingKeyExtractorを使用すると簡単になります)
助けてください!シトラスフレームワークがこのような基本的なテスト要件を見落としてしまったようにひどく設計されている可能性は否定できません。
ありがとうございました。できます! – supertramp