gpt4 book ai didi

java - jMock "unexpected invocation"对于我有一个 oneOf(instance).method() 预期的方法

转载 作者:行者123 更新时间:2023-11-29 05:46:52 26 4
gpt4 key购买 nike

我似乎无法弄清楚我在这里做错了什么:

这是我正在测试的方法:

public List<Mo> filterDuplicatesByName(List<Mo> dbMos) {
List<String> names = Lists.newArrayList();
for(Mo mo : dbMos) {
try {
String name = mo.getName();
if(names.contains(name)) {
dbMos.remove(mo);
} else {
names.add(name);
}
} catch (DataLayerException ex) {
dbMos.remove(mo);
}
}
return dbMos;
}

这是我的测试类:

package com.rondavu.wt.service.recommendations;

import com.google.common.collect.Lists;
import com.rondavu.data.api.Mo;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;

public class RecommendationsUtilsTest {

Mockery context = new Mockery();

RecommendationsUtils recommendationsUtils = new RecommendationsUtils();

final Mo mo = context.mock(Mo.class);

@Test
public void testFilterDuplicatesByName_oneMo() throws DataLayerException {
List<Mo> input = Lists.newArrayList(mo);
List<Mo> expected = Lists.newArrayList(mo);

context.checking(new Expectations() {{
oneOf (mo).getName(); will(returnValue("Mo 1"));
}});

List<Mo> actual = recommendationsUtils.filterDuplicatesByName(input);

context.assertIsSatisfied();

assertEquals(expected, actual);
}
}

当我运行测试时,我得到这个输出:

unexpected invocation: mo.getName()
no expectations specified: did you...
- forget to start an expectation with a cardinality clause?
- call a mocked method to specify the parameter of an expectation?
what happened before this: nothing!
[stack trace]

我是 jMock 的新手,一般来说,Java 不是我最擅长的语言,但我认为我的 oneOf (mo).getName() 会让它期待调用。我在这里做错了什么?

最佳答案

虽然目前尚不清楚原因,但与您定义期望的实例相比,Mockery 似乎正在检查一个不同的 mo 实例。尝试在与测试用例相同的本地范围内插入 context.mock(Mo.class)(或在 @Before 方法中),看看是否能解决问题。

关于java - jMock "unexpected invocation"对于我有一个 oneOf(instance).method() 预期的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536225/

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