Skip to content

Commit

Permalink
[Order API TDD] test: StubClass to using Mockito
Browse files Browse the repository at this point in the history
  • Loading branch information
jihunparkme committed Feb 27, 2024
1 parent ef37e18 commit 7361bfa
Showing 1 changed file with 8 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,32 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class ProductServiceTest {

private ProductService productService;
private StubProductPort productPort = new StubProductPort();
private ProductPort productPort;

@BeforeEach
void setUp() {
productPort = Mockito.mock(ProductPort.class);
productService = new ProductService(productPort);
}

@Test
void updateProduct() {
final Long productId = 1L;
final String name = "상품 수정";
int price = 2000;
final DiscountPolicy discountPolicy = DiscountPolicy.NONE;
final UpdateProductRequest request = new UpdateProductRequest(name, price, discountPolicy);
final UpdateProductRequest request = new UpdateProductRequest("상품 수정", 2000, DiscountPolicy.NONE);
final Product product = new Product("상품명", 1000, DiscountPolicy.NONE);
productPort.getProduct_will_return = product;
Mockito.when(productPort.getProduct(productId)).thenReturn(product);

productService.updateProduct(productId, request);

Assertions.assertEquals("상품 수정", product.getName());
Assertions.assertEquals(2000, product.getPrice());
}

private class StubProductPort implements ProductPort {

public Product getProduct_will_return;

@Override
public void save(final Product product) {
throw new UnsupportedOperationException("StubProductPort#save not implemented yet !!");
}

@Override
public Product getProduct(final long productId) {
return getProduct_will_return;
}
}
}

0 comments on commit 7361bfa

Please sign in to comment.