Lau*_*ves 11 java mocking mockito
我正在使用Mockito来模拟一个类似于以下方法的类:
setFoo(int offset, float[] floats)
Run Code Online (Sandbox Code Playgroud)
我希望能够验证array(floats)中的值是否与预期值数组中的值相等(在给定的容差范围内).
问题是,我想检查floats从指定位置开始的内容offset.出于测试的目的,我不知道/关心偏移是什么,只要它指向我期望的值.我也不在乎数组的其余部分包含什么.我只关心从提供的偏移量开始的值.
我该怎么做呢?
Jef*_*ica 36
虽然部分模拟不是一个坏主意,但如果使用ArgumentCaptor代替事后获取值,您可能会发现代码更容易理解.它是一个特殊的参数匹配器,可以跟踪它匹配的值.
// initialized with MockitoAnnotations.initMocks();
@Captor ArgumentCaptor<Integer> offsetCaptor;
@Captor ArgumentCaptor<float[]> floatsCaptor;
@Mock Bar bar;
@Test
public void valuesShouldBeCloseEnough() {
Sut sut = new Sut(bar);
sut.doSomething();
verify(bar).setFoo(offsetCaptor.capture(), floatsCaptor.capture());
// check values with assertValuesAreCloseEnough, declared elsewhere
assertValuesAreCloseEnough(offsetCaptor.getValue(), floatsCaptor.getValue());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19110 次 |
| 最近记录: |