2016-05-17 10 views
1

Können Sie mir bitte helfen, den PowerMock für diesen Code zu definieren:PowerMock in JUnit

String role = "ROLE_WARP_PUBLISH_PRIVATE"; 

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 
    Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities(); 

    for (GrantedAuthority auth : authorities) 
    { 
     if(auth.getAuthority().equals(role)) 
     { 
      if (publishCheckbox == true) 
      { 
       getScenarioService().makePublic(scenarioVersionId); 
      } 
     } 

    } 

Also ich weiß, wie, dass ich die getContext() verspotten müssen, aber ich kann nicht etwas zurückgeben, wenn diese Methode aufgerufen wird, so ich habe ein völliger Blackout, wie ich diese paar Zeilen verspotten kann.

Vielen Dank für

+0

Normalerweise mit dieser Art von Frage, sollten Sie zuerst Google versuchen. Stack Overflow ist für die Behebung von Problemen mit Code, nicht (und ich will hier nicht beleidigend sein) Mangel an Wissen. Wenn Sie eine Frage stellen, werfen Sie einen Blick auf [fragen]. Vielen Dank. –

+0

@David Wilson Ich ging durch Google und ich weiß, wie es tatsächlich funktioniert, aber ich konnte es nicht implementieren, sonst hätte ich es getan, deshalb fragte ich hier. – Herrminator

+0

Leider kann ich dir persönlich nicht helfen, da ich nichts über Java weiß - ich habe nur die Frage überprüft. –

Antwort

1

Meine Empfehlung helfen: vergessen PowerMock über die Verwendung.

Wenn Sie statische Methoden vortäuschen müssen, dann bauen Sie Ihre eigene kleine Wrapper-Klasse darum. Dann kann Ihr Wrapper zum Testen etwas zurückgeben Sie Kontrolle; und für die Produktionsnutzung; Ihr Wrapper ruft nur die statische Methode auf.

PowerMock sieht wie die Lösung für viele Probleme aus; aber eher früher als später, wird es die Ursache von viel mehr Probleme sein.

Ernsthaft: Wenn Ihr Design nur mit PowerMock getestet werden kann, ist dies oft ein klares Anzeichen dafür, dass Ihr Design schlecht ist. Also: Konzentriere dich darauf, deinen Code zu überarbeiten; anstatt Zeit in ein Werkzeug wie PowerMock zu investieren, das mehr schadet als nützt.

Ich habe unzählige Stunden damit verbracht, PowerMock Probleme zu lösen; und da stattdessen angefangen wurde, "besser zu testen" Produktionscode zu schreiben ... Ich habe Hunderte oder Tausende von Tests geschrieben, ohne jemals wieder PowerMock zu benötigen.

+0

Während ich der Aussage zustimme, glaube ich nicht, dass sie die Frage beantwortet. Ich denke, das wäre eine gute Fußnote zu einer tatsächlichen Antwort. –

+0

Interessanterweise; Ich gab ähnliche Antworten auf ähnliche Fragen mehr als einmal; und wichtiger: mehr als einmal akzeptierte die Person meine Antwort am Ende. Weil manchmal Menschen erkennen, dass sie vor einem XY-Problem stehen; und dass ich ihnen die Antwort auf "Y" gegeben habe ... und dass diese Information viel mehr Wert hat, als die "X" Antwort zu erhalten. – GhostCat