Ich habe eine Ressource für Rest-API, die einen Dienst verwendet. Dieser Dienst verfügt über einen Konstruktor mit Parametern. Ich möchte diese Ressource testen und diesen Dienst verspotten. Diese Question: How to pass parameters to REST resource using Jersey 2.5Mock Service innerhalb Ressource mit Jersey Test framwork
war nicht hilfreich, weil sie @Inject verwendet und ich kann es nicht verwenden. Irgendwelche Vorschläge?
Die zweite Frage ist, wie kann ich Parameter übergeben diese resouce testen: Mein Code ist:
@Path("/2/{subversion: [0-3]}/users")
public class UserResource {
Logger log = Logger.getLogger(UserResource.class);
private MyService service;
public void setService(Service ser) {
this.service = ser;
}
@Context HttpServletRequest currentRequest;
Wie kann ich "httpHeaders" und "UriInfo" übergeben. Mein Test wie folgt aussieht:
Response response = target("/2/0/users/").request().get();
Users users = response.readEntity(Users.class);
assertNotNull(users);
Vielen Dank für Ihre Antwort. Eine weitere Frage dazu ist, was kann ich tun, wenn ich in meiner Ressource Eigenschaft mit @ Context-Attribut haben? Ich aktualisiere meinen Beitrag mit dem –
Wenn Sie einen Unit-Test ausführen, spotten Sie es wie ich oben beschrieben habe. Wenn Sie einen Integrationstest mit dem Testframework ausführen, müssen Sie ihn so konfigurieren, dass er in einem Servletcontainer ausgeführt wird, damit das HttpServletRequest-Objekt injiziert wird. [Siehe hier] (http://stackoverflow.com/q/28436040/2587435) –
Sieht aus wie die Bindung für mich nicht funktioniert. Ich habe eine Sammelmappe für HttpServletRequest erstellt und einige Haltepunkte eingefügt, und nichts passiert. Ich mache Integrationstest. –