@Autowired public PlugsModel(Environment env) throws Exception { // public PlugsModel(Environment env) throws Exception { this.broker=env.getProperty("mqtt.broker"); this.clientId=env.getProperty("mqtt.client"); this.topicPrefix=(String)env.getProperty("mqtt.topicPrefix"); }怎样用powerMock来模拟这个对象写testcase
时间: 2023-05-30 10:07:27 浏览: 70
首先,需要在测试类上添加注解 `@RunWith(PowerMockRunner.class)` 和 `@PrepareForTest({PlugsModel.class})`。然后,可以使用 PowerMockito.mock() 方法来模拟 PlugsModel 对象,并设置它的属性值。最后,可以调用模拟对象的方法来进行测试。
下面是一个示例代码:
```
@RunWith(PowerMockRunner.class)
@PrepareForTest({PlugsModel.class})
public class PlugsModelTest {
@Test
public void testPlugsModel() throws Exception {
// Mock Environment 对象
Environment env = Mockito.mock(Environment.class);
Mockito.when(env.getProperty("mqtt.broker")).thenReturn("localhost");
Mockito.when(env.getProperty("mqtt.client")).thenReturn("client1");
Mockito.when(env.getProperty("mqtt.topicPrefix")).thenReturn("test/");
// Mock PlugsModel 对象
PlugsModel model = PowerMockito.mock(PlugsModel.class);
PowerMockito.whenNew(PlugsModel.class).withArguments(env).thenReturn(model);
Mockito.when(model.getBroker()).thenReturn("localhost");
Mockito.when(model.getClientId()).thenReturn("client1");
Mockito.when(model.getTopicPrefix()).thenReturn("test/");
// 调用模拟对象的方法进行测试
assertEquals("localhost", model.getBroker());
assertEquals("client1", model.getClientId());
assertEquals("test/", model.getTopicPrefix());
}
}
```
在上面的示例代码中,使用 PowerMockito.whenNew() 方法模拟 PlugsModel 对象的构造函数,并设置它的参数为 env。然后,使用 Mockito.when() 方法设置模拟对象的属性值,最后调用模拟对象的方法进行测试。
阅读全文