gpt4 book ai didi

java - mockito - 如何模拟不同参数的不同行为

转载 作者:行者123 更新时间:2023-11-30 08:59:20 24 4
gpt4 key购买 nike

我希望一个简单的模拟在使用给定参数调用时以一种方式运行,而在使用其他所有参数调用时以另一种方式运行。

我试过一些变体:

when(this.mockWebElement.findElement(not(eq(By.xpath("./td[1]"))))).thenReturn(this.mockWebElement);
when(this.mockWebElement.getText()).thenReturn("someString");

when(this.mockWebElement.findElement(By.xpath("./td[1]"))).thenReturn(dateMockElement);
when(dateMockElement.getText()).thenReturn("8/1/2014", "7/1/2014", "6/1/2014", "5/1/2014");

调用 getText(By.xpath("./td[1]")) 总是返回 "someString"。我也尝试过 and(eq(any(By.class)), not(eq(By.xpath("./td[1]")))

最佳答案

以您的代码为基础,我通过了以下测试:

@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}

@Mock private WebElement mockWebElement;
@Mock private WebElement dateMockElement;

@Test
public void testX() throws Exception {
when(this.mockWebElement.findElement(not(eq(By.xpath("./td[1]"))))).thenReturn(this.mockWebElement);
when(this.mockWebElement.getText()).thenReturn("someString");

when(this.mockWebElement.findElement(By.xpath("./td[1]"))).thenReturn(dateMockElement);
when(dateMockElement.getText()).thenReturn("8/1/2014", "7/1/2014", "6/1/2014", "5/1/2014");

WebElement w = mockWebElement.findElement(By.xpath("./td[1]"));
String x= w.getText();
assertEquals("8/1/2014", x);
}

由于您没有展示测试的其余部分,我假设错误出在实际测试设置和执行的其余管道中。

关于java - mockito - 如何模拟不同参数的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com