我試圖測試方法findById()方法的類下面,使用CrudRepository從我的數據庫中讀取數據:被測從特定測試值中解耦Mockito測試?
類:
public interface PersonRepository extends CrudRepository<Person, Integer>
{
Person findById(String id);
}
下面是我的測試類,該測試目前正在通過,但我想改變它,以便如果我測試的ID「1」從我的數據庫中刪除,我仍然可以運行我的測試。即不要依賴數據庫中的數據。
我該怎麼做?
測試類:
public class PersonRepositoryTest {
@Mock
private PersonRepository personRepository;
@Before
public void setUp() throws Exception {
//Initialize the mocked class and ensure that it is not null
MockitoAnnotations.initMocks(this);
assertThat(personRepository, notNullValue());
}
@Test
public void testFindById() throws ParseException {
//test string
String id = "1";
//when it is called, return
when(personRepository.findById(anyString())).thenReturn(new Person());
Person person = personRepository.findById(id);
assertThat(person, notNullValue());
}
}
你描述的其實就是用一個模擬的框架來實現的:你沒有使用真正的數據庫,但確定的答案前期。無論您正在查詢什麼ID,您當前的模擬將始終返回一個新的Person實例。 – Thomas
好的,我應該如何改變我目前的測試? – java123999
目前還不清楚你想實現什麼,你已經獨立於真實的數據庫。那麼你的目標是什麼? – Thomas