Tôi không chắc chắn về cách chế tạo một lớp enum singleton.Làm thế nào để thử một lớp singum enum sử dụng Mockito/Powermock?
public enum SingletonObject{
INSTANCE;
private int num;
protected setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
}
Tôi muốn khai báo getNum() trong ví dụ trên, nhưng tôi không thể tìm ra cách giả lập lớp SingletonObject thực tế. Tôi đã nghĩ rằng việc sử dụng Powermock để chuẩn bị cho bài kiểm tra sẽ giúp ích bởi vì enums vốn đã là cuối cùng.
//... rest of test code
@Test
public void test() {
PowerMockito.mock(SingletonObject.class);
when(SingletonObject.INSTANCE.getNum()).thenReturn(1); //does not work
}
Điều này đang sử dụng PowerMockMockito 1.4.10 và Mockito 1.8.5.
Kiểm tra chủ đề tương tự: http://stackoverflow.com/questions/2302179/mocking-a-singleton-class –
Cảm ơn Martin, tôi đã đọc qua chủ đề đó và có vẻ như đó là cách tiếp cận để sử dụng cách không tích cực của thực hiện một singleton, và tôi có thể sử dụng chế nhạo đúng cách với phương pháp đó. Tuy nhiên, có cách nào để thử một lớp enum singleton? Từ những gì tôi đã thu thập, enum singleton class là phương pháp được khuyến cáo để khai báo một singleton sau java 1.5. –
[Re: PowerMock: tôi có thể giả lập enums không?] (Https://groups.google.com/forum/?fromgroups=#!topic/powermock/hqrJaMi0Zrc) – Joe