Skip to content

Commit 2f5c0cf

Browse files
committed
Added example for a Spy
1 parent 19dab6d commit 2f5c0cf

7 files changed

Lines changed: 110 additions & 3 deletions

File tree

src/main/java/com/codecentric/sample/store/model/Customers.java renamed to src/main/java/com/codecentric/sample/store/model/Customer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@
22

33
import java.util.UUID;
44

5-
public class Customers {
5+
public class Customer {
66

77
private String id;
88

99
private String name;
1010

1111
private String address;
1212

13+
public Customer(String id, String name, String address) {
14+
this.id = id;
15+
this.name = name;
16+
this.address = address;
17+
}
18+
1319
public String getId() {
1420
return id;
1521
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.codecentric.sample.store.service;
2+
3+
import com.codecentric.sample.store.model.Customer;
4+
import com.codecentric.sample.store.service.external.AddressService;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Service;
7+
8+
@Service
9+
public class CustomerService {
10+
11+
@Autowired
12+
private AddressService addressService;
13+
14+
15+
public String getPLZAddressCombination(Customer customer) {
16+
17+
String result = Integer.toString(addressService.getPLZForCustomer(customer))
18+
+ addressService.getAddressForCustomer(customer);
19+
20+
return result;
21+
}
22+
}

src/main/java/com/codecentric/sample/store/service/ItemService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.codecentric.sample.store.model.Item;
44
import com.codecentric.sample.store.repository.ItemRepository;
5+
import com.codecentric.sample.store.service.tools.StaticService;
56
import org.springframework.beans.factory.annotation.Autowired;
67
import org.springframework.stereotype.Service;
78

@@ -13,7 +14,6 @@ public class ItemService {
1314
@Autowired
1415
private ItemRepository itemRepository;
1516

16-
1717
public int getAveragePriceForAllItems() {
1818

1919
List<Item> items = itemRepository.readAllItems();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.codecentric.sample.store.service.external;
2+
3+
import com.codecentric.sample.store.model.Customer;
4+
import org.springframework.stereotype.Service;
5+
6+
@Service
7+
public class AddressService {
8+
9+
10+
public int getPLZForCustomer(Customer customer) {
11+
12+
// Assume complicated request here that requires some external host services
13+
// to retrieve the proper PLZ
14+
return 12345;
15+
}
16+
17+
18+
public String getAddressForCustomer(Customer customer) {
19+
return customer.getAddress();
20+
}
21+
22+
}

src/main/java/com/codecentric/sample/store/service/StaticService.java renamed to src/main/java/com/codecentric/sample/store/service/tools/StaticService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.codecentric.sample.store.service;
1+
package com.codecentric.sample.store.service.tools;
22

33

44
public class StaticService {
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.codecentric.sample.store.service;
2+
3+
import com.codecentric.sample.store.model.Customer;
4+
import com.codecentric.sample.store.model.Item;
5+
import com.codecentric.sample.store.repository.ItemRepository;
6+
import com.codecentric.sample.store.service.external.AddressService;
7+
import com.codecentric.sample.store.service.tools.StaticService;
8+
import com.sun.jndi.cosnaming.IiopUrl;
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.mockito.InjectMocks;
13+
import org.mockito.Mock;
14+
import org.mockito.Mockito;
15+
import org.mockito.MockitoAnnotations;
16+
import org.mockito.Spy;
17+
import org.powermock.core.classloader.annotations.PrepareForTest;
18+
import org.powermock.modules.junit4.PowerMockRunner;
19+
20+
import java.util.ArrayList;
21+
import java.util.List;
22+
23+
import static org.hamcrest.CoreMatchers.is;
24+
import static org.junit.Assert.assertThat;
25+
import static org.mockito.Mockito.times;
26+
import static org.mockito.Mockito.when;
27+
import static org.powermock.api.mockito.PowerMockito.mockStatic;
28+
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
29+
30+
public class CustomerServiceTest {
31+
32+
@Spy
33+
private AddressService addressService;
34+
35+
@InjectMocks
36+
private CustomerService customerService;
37+
38+
39+
@Before
40+
public void setUp() throws Exception {
41+
MockitoAnnotations.initMocks(this);
42+
}
43+
44+
45+
@Test
46+
public void testPLZAddressCombination() {
47+
48+
49+
Customer customer = new Customer("204", "John Do", "224B Bakerstreet");
50+
51+
when(addressService.getPLZForCustomer(customer)).thenReturn(47891);
52+
String address = customerService.getPLZAddressCombination(customer);
53+
54+
assertThat(address, is("47891224B Bakerstreet"));
55+
}
56+
}

src/test/java/com/codecentric/sample/store/service/ItemServiceTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.codecentric.sample.store.model.Item;
44
import com.codecentric.sample.store.repository.ItemRepository;
5+
import com.codecentric.sample.store.service.tools.StaticService;
56
import org.junit.Before;
67
import org.junit.Test;
78
import org.junit.runner.RunWith;

0 commit comments

Comments
 (0)