1
2
3
4
5
6 package dev.metaschema.core.testsupport.mocking;
7
8 import static org.mockito.Mockito.withSettings;
9
10 import org.mockito.Answers;
11 import org.mockito.Mockito;
12
13 import java.util.UUID;
14
15 import dev.metaschema.core.util.ObjectUtils;
16 import edu.umd.cs.findbugs.annotations.NonNull;
17 import edu.umd.cs.findbugs.annotations.Nullable;
18
19
20
21
22
23 public class AbstractMockitoFactory
24 implements IMockFactory {
25
26
27
28
29
30
31
32 protected AbstractMockitoFactory() {
33
34 }
35
36 @Override
37 @NonNull
38 public <T> T mock(@NonNull Class<T> clazz, @Nullable String name) {
39 StringBuilder builder = new StringBuilder()
40 .append(clazz.getSimpleName());
41 if (name != null) {
42 builder
43 .append('-')
44 .append(name);
45 }
46 builder
47 .append('-')
48 .append(UUID.randomUUID().toString())
49 .toString();
50 return ObjectUtils.notNull(Mockito.mock(clazz, withSettings()
51 .name(builder.toString())
52 .defaultAnswer(Answers.CALLS_REAL_METHODS)));
53 }
54 }