I have a class Service that calls a method of singleton class. I would like to mock a saveContract method calls.
public class Service {
    public Contract save(Contract contract) {
        Contract result;
        ...
        result = ContractDao.getInstance().saveContract(contract);
        ...
        return result;
    }
}
I modified Service class like this (added a field and a constructor, for testing purposes only):
public class Service {
    private final ContractDao contractDao;
    
    public Service() {
        this(ContractDao.getInstance());
    }
    
    public Service(final ContractDao contractDao) {
        this.contractDao = contractDao;
    }
    
    public Contract save(Contract contract) {...}
}
And my test class is:
@ExtendWith(MockitoExtension.class)
class ServiceTest {
    @Mock
    ContractDAO contractDaoMock;
    
    private Service service;
    
    @BeforeEach
    public void setup() {
        service = new Service(contractDaoMock);
    }
    
    @Test
    void saveContractTest() {
        Contract changedContract = new Contract(...);
        when(contractDaoMock.saveContract(any())).thenReturn(changedContract);
    
        Contract givenContract = new Contract(...);
        Contract actualContract = service.save(givenContract);
    
        //Assertions
        ...
    }
}
 
    