- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的项目是用java编写的,我正在从“com.microsoft.azure:azure-servicebus”迁移到“com.azure:azure-messaging-servicebus”。迁移成功,但我在编写单元测试时遇到问题。我想创建一个 ServiceBusReceivedMessage 对象,但无法这样做。
关于如何编写单元测试的任何想法。
最佳答案
谢谢Xie Yijun 。将您的建议作为答案发布以帮助其他社区成员。
使用 Azure SDK 客户端库的客户可以使用 Mockito 模拟服务客户端使用org.mockito.plugins.MockMaker
。更多信息可参见Mock the unmockable: opt-in mocking of final classes/methods .
示例代码
public class TelemetryEvents {
private final EventHubConsumerAsyncClient consumerClient;
public TelemetryEvents (EventHubConsumerAsyncClient consumerClient) {
this.consumerClient = consumerClient;
}
public Flux<TelemetryEvent> getEvents() {
return consumerClient.receiveFromPartition("1", EventPosition.latest())
.map(event -> new TelemtetryEvent(event));
}
}
测试代码
import reactor.test.publisher.TestPublisher;
import reactor.test.StepVerifier;
import static com.azure.messaging.eventhubs.*;
import static org.mockito.Mockito.*;
public class TelemetryEventsTest {
@Test
public void canGetEvents() {
// Arrange
// After following the instructions in "Steps" section
EventHubConsumerAsyncClient consumerClient = mock(EventHubConsumerAsyncClient.class);
TestPublisher<EventData> eventsPublisher = TestPublisher.createCold();
eventsPublisher.emit(new EventData("Foo"), new EventData("Bar"));
when(consumerClient.receiveFromPartition(eq("1"), eq(EventPosition.latest())).thenReturn(eventsPublisher.flux());
TelemetryEvents telemetryEvents = new TelemetryEvents(consumerClient);
// Act
StepVerifier.create(telemetryEvents.getEvents())
.assertNext(event -> isMatchingTelemetry(event))
.assertNext(event -> isMatchingTelemetry(event))
.verifyComplete();
}
}
欲了解更多信息,请查看Mocking Final Classes
关于azure - ServiceBusReceivedMessage 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68254641/
我的项目是用java编写的,我正在从“com.microsoft.azure:azure-servicebus”迁移到“com.azure:azure-messaging-servicebus”。迁移
我正在创建一个作为 ServiceBus 触发器的 Azure 函数。 [FunctionName("RetryRack")] public async Task Run([S
我们有一个 Azure 函数,它使用 ServiceBusTrigger 来订阅服务总线主题。它曾经工作得很好,直到最近进行了更改。近期变动:我们已从“Microsoft.Azure.ServiceB
我是一名优秀的程序员,十分优秀!