概括我們正在嘗試使用 Pageable 和 Slice 對象模擬對 DB 的調用,但是當應用程序調用時,模擬沒有返回分配的返回值。詳細介紹我們有一個 Pageable 方法Spring-Data Repository:public interface CatRepository extends CouchbasePagingAndSortingRepository<Cat, String> { Slice<Cat> findAllByOwnerIdAndName(String ownerId, String name, Pageable pageable);由于Slice是一個接口,我們創建了一個MockSlice實現其方法的類:@Builder@Datapublic class MockSlice implements Slice{...Mockito在為此調用創建測試時,我們編寫了以下代碼: Slice<Cat> slice = MockSlice.builder().content(new LinkedList()).build(); when(catRepository.findAllByOwnerIdAndname(anyString(), anyString(), any(Pageable.class))).thenReturn(slice);測試類有這些注釋:@RunWith(MockitoJUnitRunner.class)@SpringBootTestpublic class GetCatsTest{但是,在服務類中,當單元測試運行時,以下slice是null: Pageable pageable = PageRequest.of(pageNumber, 1000, Sort.by("id")); Slice<Cat> slice = catRepository.findAllByOwnerIdAndName("23423", "Oscar", pageable); catList = slice.getContent(); <-- NullpointetException here編輯為了確保接線正確,并且整個 conf 工作正常,我在存儲庫中添加了另一個不可分頁的方法,對其進行了模擬并且工作正常:在測試類中:LinkedList<Cat> list = new LinkedList<>();list.add(new Cat("fasdfasf", "Oscar"));when(catRepository.findAllByOwnerIdAndName(anyString(), anyString())).thenReturn(list);在存儲庫界面中:List<Cat> findAllByOwnerIdAndName(String ownerId, String name);
1 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
在這個問題上花了幾個小時后......
問題出在代碼中Intellij而不是在代碼中。
Intellij 版本是:
2018.2.3 Ultimate Edition
Build #UI-182.4323.46
Built on Sep 3 2018
在某個時候,它才開始起作用....
添加回答
舉報
0/150
提交
取消