我正在使用Spring Boot和PostgreSQL开发应用程序。 在一些测试中,我需要让演员联系起来并实现该动作。
我使用getPrincipal()方法获取对象,这不是问题(我正在获取Garage,这是普通Actor的扩展)。
public Repair create(final int varId) {
final Repair r = new Repair();
Garage g = (Garage) this.actorService.findByPrincipal();
Vehicle v = this.vehicleService.findOne(varId);
r.setEntryDate(new Date(System.currentTimeMillis()-1));
r.setGarage(g);
r.setVehicle(v);
return r;
但是当我测试该方法时,我需要一种“登录”然后注销的方法。因此,我想创建一个诸如authenticate(String actorName)之类的方法,但是我不确定如何开发它,因为以其他方式无法实现测试。
这是我的测试代码的一部分:
public void template(String entryDate, String departureDate, String cause, String actions, Double labourPrice, Double itemsPrice, Double finalPrice,
int repairID, String garageName, int garageID, int vehicleID, String operation, final Class<?> expected) {
Class<?> caught;
Repair r;
caught = null;
Date now = new Date(System.currentTimeMillis());
Calendar c = Calendar.getInstance();
c.setTime(now);
c.add(Calendar.DATE, 1);
Date tomorrow = c.getTime();
c.add(Calendar.DATE, -2);
Date yesterday = c.getTime();
if(garageName != "")
authenticate(garageName);
try {
if (operation.equals("crear y guardar")) {
r = this.repairService.create(vehicleID);
} else {
// else if(operation.equals("BD y guardar")){
r = this.repairService.findOne(repairID);
}
Garage g = this.garageService.findOne(garageID);
Vehicle v = this.vehicleService.findOne(vehicleID);
if (entryDate == "Ayer")
r.setEntryDate(now);
else if (entryDate == "Mañana")
r.setEntryDate(tomorrow);
else
r.setEntryDate(null);
if (departureDate == "Hoy")
r.setDepartureDate(now);
else if (departureDate == "Ayer")
r.setDepartureDate(yesterday);