MissingMethodInvocationException:when()需要一个必须是“mock上的方法调用”的参数。例如:when(mock.getarticles()).ThenReturn(articles);
此外,出现此错误的原因可能是:1。您使用final/private/equals()/hashCode()方法中的任一个作为存根。这些方法不能被截取/验证。2.内部when()不是对mock而是对其他对象调用method。
我的测试:
class ValidateBookResultsTests {
public static ArrayList<Book> searchResults = new ArrayList<Book>();
public static List<Book> topFive;
public static ArrayList<String> authors = new ArrayList<String>();
public static Book book1;
public static Book book2;
public static Book book3;
public static Book book4;
public static Book book5;
public static Book book6;
@BeforeEach
public void setUp() {
book1 = new Book("title1", authors, "publisher1");
book2 = new Book("title2", authors, "publisher2");
book3 = new Book("title3", authors, "publisher3");
book4 = new Book("title4", authors, "publisher4");
book5 = new Book("title5", authors, "publisher5");
book6 = new Book("title6", authors, "publisher6");
searchResults.add(book1);
searchResults.add(book2);
searchResults.add(book3);
searchResults.add(book4);
searchResults.add(book5);
searchResults.add(book6);
}
@Test
public void returnFiveBooksFromSearchResults() {
authors.add("John Doe");
authors.add("Bill Gates");
BookSearch mockBookSearch = Mockito.mock(BookSearch.class);
Mockito.when(mockBookSearch.returnFiveBooks(searchResults)).thenReturn(topFive);
System.out.println("return books: " + mockBookSearch.returnFiveBooks(searchResults));
System.out.println("top: "+ topFive);
assertEquals(topFive.size(), 5);
}
}
public static List<Book> returnFiveBooks(ArrayList<Book> searchResults) {
Collections.shuffle(searchResults);
topFive = searchResults.subList(0, 5);
printFiveResults();
return topFive; }
错误消息告诉您,您的方法调用不是模拟上的方法调用。
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
为什么?因为您正在尝试模拟静态方法。
Mockito.when(mockBookSearch.returnFiveBooks(searchResults)).thenReturn(topFive);
这相当于:
Mockito.when(BookSearch.returnFiveBooks(searchResults)).thenReturn(topFive);
@Test
public void returnFiveBooksFromSearchResults() {
var topFive = BookSearch.returnFiveBooks(searchResults);
assertEquals(topFive.size(), 5);
}
我读过其他的解决方案,其中提到创建一个模拟类/对象,我相信我已经用“booksearch mockBookSearch=mockito.mock(booksearch.class);” 我错过了什么?
问题内容: 给出以下Mockito语句: 考虑到嘲笑方法将返回值传递给when(),Mockito如何为该嘲笑创建代理?我想这会使用一些CGLib的东西,但是有兴趣知道这在技术上是如何完成的。 问题答案: 简短的答案是,在您的示例中,的结果mock.method()将是类型合适的空值;Mockito通过代理,方法拦截和类的共享实例使用间接方式,MockingProgress以确定对模拟方法的调用是
本文向大家介绍js如何解决数字精度丢失的问题?相关面试题,主要包含被问及js如何解决数字精度丢失的问题?时的应答技巧和注意事项,需要的朋友参考一下 const verifyFunc = (left, right) => { return Math.abs(left - right) < Number.EPSILON * Math.pow(2, 2); }; console.log(verifyFu
主要内容:一、前情提示,二、保证投递消息不丢失的confirm机制,三、confirm机制的代码实现,四、confirm机制投递消息的高延迟性,五、高并发下如何投递消息才能不丢失,六、消息中间件全链路100%数据不丢失能做到吗?一、前情提示 我们分析了RabbitMQ开启手动ack机制保证消费端数据不丢失的时候,prefetch机制对消费者的吞吐量以及内存消耗的影响。 通过分析,我们知道了prefetch过大容易导致内存溢出,prefetch过小又会导致消费吞吐量过低,所以在实际项目中需要慎重测
与手上其他项目一样,axios.create的二次封装是一样的,而 API 模块从链式调用改成了单个函数导出调用。 然后,接口调用时出了问题,期望有大佬能够帮忙看看如何解决。 以下是部分代码: 提供项目接口目录:
本文向大家介绍解决uploadify使用时session发生丢失问题的方法,包括了解决uploadify使用时session发生丢失问题的方法的使用技巧和注意事项,需要的朋友参考一下 今天在使用uploadify时发现session会发生丢失的情况,经过一番研究发现,其丢失并不是真正的丢失,而是在使用Flash上传控件的时候使用的session机制和asp.net中的不相同。为解决这个问题使用两种