当前位置: 首页 > 知识库问答 >
问题:

如何在spring集成中模拟连接工厂

郜彦
2023-03-14
<jee:jndi-lookup id="narconFactory" jndi-name="LBARQCF" resource-ref="false"/>
@RunWith(SpringRunner.class)
@SpringBootTest
public class MQControllerTest {

//step 2
@Autowired
private MockMvc mvc;

@MockBean
private MQController mqController;

protected static final ConnectionFactory amqFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

public static final CachingConnectionFactory connectionFactory = new CachingConnectionFactory(amqFactory);

@BeforeClass
public static void startUp() throws Exception {
    connectionFactory.setCacheConsumers(false);
    connectionFactory.createConnection().close();
}

@AfterClass
public static void shutDown() {
    connectionFactory.resetConnection();
}

@Autowired
private JmsTemplate mockJmsTemplate;

@Autowired
private SourcePollingChannelAdapter startJms;


@Before
public void setup() throws JMSException{
    Mockito.reset(this.mockJmsTemplate);
}   

@Test
public void test_tbm_vrijeDagenCorrectie() throws Exception {

    String expectedResponse ="";
    //using bddmockito
    given(mqController.tmVDCorrect(any(String.class))).willReturn(expectedResponse);

    this.startJms.start();

    mvc.perform(get("/tm/vdc/{dgn}","2016-01-16"))
               .andExpect(status().isOk());

}
    <util:constant id="narconFactory" static-field="n.d.poc.MQControllerTest.connectionFactory"/>
     <util:constant id="vanconFactory" static-field="n.d.poc.MQControllerTest.connectionFactory"/> 

<罢工> 错误:

没有类型为'org.springframework.test.web.servlet.mockMVC'的合格bean可用:至少需要1个符合autowire候选的bean。依赖项注释:{@org.springframework.beans.factory.annotation.autowire(required=true)}位于org.springframework.beans.factory.support.defaultListableBeanFactory.raisenomatchingBeanFound(DefaultListableBeanFactory.java:1474)~[spring-beans-4.3.5.release.jar:4.3.5.release]

<罢工> 我不知道我的错误是什么 编辑2:

github https://github.com/kswat/lrIntegrationUnit中的示例代码

共有1个答案

姜磊
2023-03-14

我建议考虑使用ActiveMQ及其嵌入式模式,而不是mocking。通过这种方式,您将获得完整的JMS,并且不会处理低级资源来进行模拟。

在Spring Integration中,我们有以下测试目的:

/**
 * Keeps an ActiveMQ {@link VMTransport} open for the duration of
 * all tests (avoids cycling the transport each time the last
 * connection is closed).
 * @author Gary Russell
 * @since 3.0
 *
 */
public abstract class ActiveMQMultiContextTests {

    protected static final ConnectionFactory amqFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

    protected static final CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
            amqFactory);

    @BeforeClass
    public static void startUp() throws Exception {
        connectionFactory.setCacheConsumers(false);
        connectionFactory.createConnection().close();
    }

    @AfterClass
    public static void shutDown() {
        connectionFactory.resetConnection();
    }

}

ConnectionFactory静态属性确实可以用作bean:

<util:constant id="narconFactory"
               static-field="ActiveMQMultiContextTests.connectionFactory"/>
 类似资料:
  • 在用注释并使用)运行的Spring启动集成测试中,我可以通过 restTemplate和将真正的http post调用放到我的rest控制器。 这工作正常,就在控制器的末端 -

  • 我试图在一个项目中结合Spring批处理和Spring集成。因此,我的想法是,Spring Batch使用使用自定义方法读取文件,返回,而使用创建新的,并将该消息发送到通道中... 所以从这里开始,Spring Integration连接到该通道,并开始工作其工作流... 知道如何实现吗?因为除了将读取的输入之外,我没有得到任何结果,但是我无法从那里获得Spring集成。我读过,但它不适合我的目的

  • 基于此,有人对如何使用spring Integration实现此功能有什么建议吗?

  • 问题内容: 在Go中,TCP连接(net.Conn)是io.ReadWriteCloser。我想通过模拟TCP连接来测试我的网络代码。我有两个要求: 要读取的数据存储在字符串中 每当写入数据时,我都希望将其存储在某种缓冲区中,以便以后使用 是否有数据结构或简单的方法? 问题答案: 为什么不使用?它是一种并且具有获取存储数据的方法。如果需要将其设置为,则可以定义自己的类型: 并定义一个方法:

  • 我在python文件中有以下代码。我必须对这个文件进行单元测试。但是为了做到这一点,我需要实例化类的对象