sequenceDiagram
participant A as UserCreated (Bord)
participant B as UserGateWay(外部資源、資料庫、IO資料流)
A->>B: 1. exsit
B->>A: 2. 存在/不存在
A->>B: 3.save
個案
1.建立帳號成功案例(CreateUser)
帳號:A1234567
密碼:7654321A
<font color="#660000">不存在 </font><br />
package tdd;
public class UserCreated {
public CreateUserReponse createUser(CreateUserRequest createUserReques) {
// TODO Auto-generated method stub
return null;
}
}
public class UserCreated {
private UserGateWay userGateWay;
public UserService(UserGateWay userGateWay) {
super();
this.userGateWay = userGateWay;
}
public CreateUserReponse createUser(CreateUserRequest createUserReques) {
String account = createUserReques.getAccount();
String passowd = createUserReques.getPassowd();
boolean exsit = this.userGateWay.exsit(account);
CreateUserReponse createUserReponse = new CreateUserReponse();
if (!exsit) {
boolean isMore6 = account.length() > 6;
boolean isPasswordOk = this.checkPasswor(passowd);
if (isMore6 && isPasswordOk) {
User user = new User(account, passowd);
createUserReponse.setUser(user);
userGateWay.save(user);
}
}
return createUserReponse;
}
private boolean checkPasswor(String passowd) {
boolean isDigit = false;
boolean isLetter = false;
for (int i = 0; i < passowd.length(); i++) {
if (Character.isDigit(passowd.charAt(i))) {
isDigit = true;
}
if (Character.isLetter(passowd.charAt(i))) {
isLetter = true;
}
}
return isDigit && isLetter;
}
}
public class UserCreated {
private static final String A1234567 = "A1234567";
/**
* 建立帳號成功案例 - 帳號:A1234567 - 密碼:7654321A - 不存在
*/
@Test
public void create_sucesfully() {
UserGateWay userGateWay = Mockito.mock(UserGateWay.class);
Mockito.when(userGateWay.exsit(A1234567)).thenReturn(false);
UserService userService = new UserService(userGateWay);
CreateUserRequest createUserReques = new CreateUserRequest(A1234567, "7654321A");
CreateUserReponse reponse = userService.createUser(CreateUserReques);
assertTrue(reponse.getUser() != null);
}
}