Skip to content

Instantly share code, notes, and snippets.

@mitchtabian
Last active April 30, 2019 16:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mitchtabian/f66938b82ef711be321778e5634d18e2 to your computer and use it in GitHub Desktop.
Save mitchtabian/f66938b82ef711be321778e5634d18e2 to your computer and use it in GitHub Desktop.
example: Unit Testing Stubs (Mock Services) - NOT using Mockito
// main package
public interface ApiService {
void createNewUser(User user);
}
// main package
public class ApiServiceManager {
private final ApiService apiService;
public ApiServiceManager(ApiService apiService) {
this.apiService = apiService;
}
public void insertNewUser(User user){
apiService.createNewUser(user);
}
}
// test package
@DisplayName("Api Service Test")
public class ApiServiceNotifierTest {
private MockApiServiceDouble apiServiceDouble;
@BeforeEach
void init(){
apiServiceDouble = new MockApiServiceDouble();
}
@Test
@DisplayName("Insert a new user using ApiServiceManager")
void testInsertNewUser(){
ApiServiceManager notifier = new ApiServiceManager(apiServiceDouble);
User user = new User("Mitch", "Mitch@tabian.ca", 29);
notifier.insertNewUser(user);
assertEquals(1, apiServiceDouble.createdUsers.size());
final User expectedUser = apiServiceDouble.createdUsers.get(0);
assertAll(
new Executable() {
@Override
public void execute() throws Throwable {
assertEquals("Mitch", expectedUser.getName());
}
},
new Executable() {
@Override
public void execute() throws Throwable {
assertEquals("Mitch@tabian.ca", expectedUser.getEmail());
}
},
new Executable() {
@Override
public void execute() throws Throwable {
assertEquals(29, expectedUser.getAge());
}
}
);
}
}
// test package
public class MockApiServiceDouble implements ApiService {
ArrayList<User> createdUsers = new ArrayList<>();
@Override
public void createNewUser(User user) {
createdUsers.add(user);
}
}
// main package
public class User {
private String name;
private String email;
private int age;
public User(String name, String email, int age) {
this.name = name;
this.email = email;
this.age = age;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment