μ€μ μλ API λΆνν
μ€νΈλ₯Ό ν μμλ
ngrinder λꡬ (λ€μ΄λ²μμ λ§λ€μλ€κ³ νλ€) λ₯Ό λ컀 λ°μ€ν¬νμ λμ°κ³ μ€μ΅μ ν΄λ³΄μλ€.
μ€νμλ μνμ λ΄λ μ₯λ°κ΅¬λ κΈ°λ₯μ λν΄ κ΅¬ννμκ³ , Mock κ°μ²΄λ₯Ό μ¬μ©ν΄ ν
μ€νΈλ₯Ό μμ±νμλ€.
ngrinder λ API λ₯Ό λΆν ν
μ€νΈ ν μ μλ λꡬ (Tool) μ
λλ€.
https://hub.docker.com/r/ngrinder/controller/ λ컀 곡μ λ¬Έμλ₯Ό 보며 Controller μ Agent λ₯Ό Pull λ°μλ€.
λ컀 곡μ λ¬Έμμ μμλλ‘ μ§ννμλ€λ©΄ http://localhost:80 μ£Όμλ₯Ό μ
λ ₯νκ² λλ©΄ μλμ νλ©΄μΌλ‘ μ μλ κ²μ΄λ€.
User ID μ Password λ μ²μμλ λλ€ admin μΌλ‘ μ€μ λμ΄μλ€.
User IDμPasswordλ₯Ό μ λ ₯νκ³ μ μνκ²λλ©΄,
μ΄λ¬ν νλ©΄μ΄ μ μ λκ² λλλ°, 맨 μμ νμ λ³΄κ² λλ©΄, μ±λ₯ κ²μ¬μ, μ€ν¬λ¦½νΈκ° μμ΅λλ€.
μ€ν¬λ¦½νΈ νμ ν΄λ¦νμ¬ μ μνκ² λλ©΄, μ€ν¬λ¦½νΈλ₯Ό λ§λ€μ μμ΅λλ€. μ¬μ©νλ©΄μ λλμ μ μ€ν¬λ¦½νΈλ μμμ λ§λλ κ² μ²λΌAPIμ μμμ λ§λλ κ² μ λλ€.
μ€ν¬λ¦½νΈλ₯Ό μμ±νλ κ² μ΄λ©°,URLμλlocalhost:~,127.0.0.1μURLμ μ¬μ©ν μ μμΌλ©°, λ³ΈμΈ IP νΉμ λ°°ν¬νURLμ΄ λ€μ΄κ°μΌ λλ κ² κ°μ΅λλ€.
μ€ν¬λ¦½νΈμ μμ±μ΄ λλλ©΄ Validate λ²νΌμ λλ¬ μ€ν¬λ¦½νΈλ₯Ό νμΈνλ©°, μ΄κΈ° 맨 μμ νμμ μ±λ₯ κ²μ¬ νμ λλ¬ μ±λ₯ κ²μ¬λ₯Ό νλ©΄ λ©λλ€.
(λλ μ¬κΈ°μ Validate λ²νΌμ λλ₯΄λκΉ μλ¬κ° λ°μνλ€.)
ngrinder μ Controller μ Agentλ₯Ό λ컀λ₯Ό ν΅ν΄ λμ°κ² λλ©΄ CPUλ₯Ό μμ²λκ² μ¬μ©νλ€.
λ
ΈνΈλΆ Fan (μ νκΈ°)μ΄ μμ² μ¬νκ² λλ κ²μ μμ μλ€.
mokito κ΄λ ¨ λ©μλμ λν΄μ μ 리 νλ κΈμ μμ±νκ² μ΅λλ€.λ¨Όμ μ₯λ°κ΅¬λ μμ± κΈ°λ₯μ μ½λλ₯Ό 보며 μμ±νκ² μ΅λλ€.
@ExtendWith(MockitoExtension.class)
@Transactional
class CartServiceImplTest {
@Mock
private CartRepository cartRepository;
@InjectMocks
private CartServiceImpl cartService;
@DisplayName("μΉ΄νΈ μμ± νμΈ")
@Test
void create_Cart() {
Member member = Member.builder()
.username("shin")
.password("qwer1234")
.build();
cartService.createCart(member);
verify(cartRepository, times(1)).save(any());
}
}
@ExtendWith(MockitoExtension.class):mokitoμ@Mockμ μ¬μ© νκΈ° μν΄ μμ± νλ€.
@Mock: mock κ°μ²΄λ₯Ό μμ± ν΄μ£Όλ μ΄λ Έν μ΄μ μ΄λ©°, λμ²΄λ‘ μμ‘΄μ± μ£Όμ μ μν΄ μμ±ν νλμ λ§μ΄ μ¬μ© νλ κ² κ°λ€.
@InjectMocks: μμ±λ mock κ°μ²΄λ₯Ό μ£Όμ ν λ μ¬μ©νλ μ΄λ Έν μ΄μ μ΄λ©°, μ½κ² μκ°νμ¬ λ ν¬μ§ν λ¦¬κ° μλΉμ€μ μ£Όμ λλ κ² μ²λΌ μ¬μ© ν©λλ€.
(μ£Όλ‘ μλΉμ€ ν΄λμ€μ@InjectMocksλ₯Ό μ¬μ©)
verify(): νΉμ Mock κ°μ²΄μ λ©μλ νΈμΆμ κ²μ¦ν λ μ¬μ© ν©λλ€. μ¦ μ μ½λμμλsave()λ©μλλ₯Ό κ²μ¦ νλ κ² μ λλ€.
times(νμ μ λ ₯): ν΄λΉ λ©μλκ° λͺλ² νΈμΆ λμλμ§ κ²μ¦νλ λ©μλ μ λλ€.
any():any()λ©μλλ μ΄λ€ κ°μ΄λ μ΄λ€ μΈμκ° μ λ¬ λλμ§ κ°μ νΈμΆμ΄ λμλμ§λ§ κ²μ¦ ν©λλ€.