2016-12-08 25 views
1

私はSpring Mvc REST Controllerのテストを書いたかったのです。私はhttps://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4の公式の文書に従っていますので、更新されたバージョンto 1.4となりました。スプリングブート1.4 - REST APIテスト

私は、次の依存関係を追加しました:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 

と親

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.2.RELEASE</version> 
    </parent> 

私はこのようなルックスをテストしたい私のLoginControllerのAPI:

@RequestMapping(value = { "/login" }, method = RequestMethod.GET) 
    public @ResponseBody ResponseEntity<HashMap<String, Object>> login() { 


      // some logic to get Customer 
     return new ResponseEntity<>(customer, HttpStatus.OK); 

    } 

とドキュメントごとなどここに私のテストです:

@RunWith(SpringRunner.class) 
@WebMvcTest(LoginController.class) 
@SpringBootTest 
public class AuthorizationAndAuthenticationTest extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private WebApplicationContext webApplicationContext; 
    private LoginController loginController; 
    @Autowired 
    private TestRestTemplate restTemplate; 

    @MockBean 
    private LoggingService loggingService; 

    @Test 
    public void test() { 
     given(this.loggingService.logInfoMessage("some Dummy Message", this.getClass())). 
     this.restTemplate.getForObject("/login", Object.class); 
    } 
} 

は問題は: 1.ログインコントローラは、多くのサービスを使用しているので、私は「与えられた」を使用してそれらをモックしたかったが、それは、コンパイルの問題を与え、私はわからないが、いくつかの依存関係が欠落していますように思えます。 2.TestRestTemplateは推奨されておらず、代わりに何がありますか?私は何も見つからなかった。

これは、Springフレームワークを使用してテストを書くので、私はいくつかの細部を見落としている可能性があります。

私にこれを手伝ってください。問題#2については

given(this.loggingService.logInfoMessage("some Dummy Message", this.getClass())) 
    .willReturn("your desired value") 

org.springframework.boot.test.TestRestTemplateorg.springframework.boot.test.web.client.TestRestTemplateの賛成で廃止されました

答えて

3

は問題#1に関して:logInfoMessageスタブしようとしたときに、あなたはおそらくto call .withReturnを忘れてしまっています。

パッケージを変更するだけです。

ところで、Spring MVCエンドポイントをテストするのに最も適切な構造は、MockMvcで、TestRestTemplateではありません。

関連する問題