Commit b778b8ff by 周晓航

优化购物车结算项目的spock

parent 7554fbee
package cn.freemud.adapter
import cn.freemud.adapter.ActivityAdapter
import cn.freemud.entities.vo.GetShoppingCartGoodsApportionRequestVo
import cn.freemud.service.impl.ShoppingCartNewServiceImpl
import com.alibaba.fastjson.JSON
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
import org.powermock.modules.junit4.PowerMockRunnerDelegate
import org.spockframework.runtime.Sputnik
......@@ -18,24 +23,29 @@ import spock.lang.Specification
*/
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Sputnik.class)
@PrepareForTest()
class DemoSpockMock extends Specification {
def shoppingCartNewServiceImpl = new ShoppingCartNewServiceImpl()
def activityAdapter = Mock(ActivityAdapter.class)
def customerInfoManager = PowerMockito.mock(AssortmentCustomerInfoManager)
void setup() {
shoppingCartNewServiceImpl.activityAdapter = activityAdapter
shoppingCartNewServiceImpl.customerInfoManager = customerInfoManager
}
def "testMockEnable"() {
given: "设置请求参数"
def customerInfoVo = JSON.parseObject("{\"accessToken\":\"\",\"alipayUserId\":\"\",\"appId\":\"wx3f7ca0c75b213380\",\"appSecret\":\"\",\"appsecret\":\"\",\"channel\":\"1\",\"customerId\":\"\",\"devBrand\":\"\",\"devModel\":\"\",\"iappId\":\"7\",\"memberId\":\"3614319825989629832\",\"mobile\":\"17327190802\",\"newMember\":false,\"nickName\":\"SWEET SUGA\",\"openId\":\"o98fP4qjUo7xm-nT-JAaVEk9yBqM\",\"openid\":\"o98fP4qjUo7xm-nT-JAaVEk9yBqM\",\"partnerId\":\"2581\",\"photoUrl\":\"https://thirdwx.qlogo.cn/mmopen/vi_32/zahIlicTNSM0IA0qjOryv6s0SzIhlwW9EpQKvL63GbPhBwficMAibDohDEibSCQU0I5KohibIpp0yL57TWRcVKrRH2A/132\",\"registerTime\":\"2021-02-26 14:10:26\",\"sessionId\":\"eac53a53f8ae62def7f40cb1e47a1bd9791d95a8\",\"sessionKey\":\"GCyyapzbBSM4yXh9AduGOw==\",\"session_key\":\"GCyyapzbBSM4yXh9AduGOw==\",\"storeId\":\"\",\"tableNumber\":\"\",\"thirdPartyMemberID\":\"\",\"thirdPartyPartnerID\":\"\",\"unionId\":\"o7cEm68JPFhbrzqb0a0BcQE-dDVA\",\"wxAppId\":\"wx3f7ca0c75b213380\",\"wxAppid\":\"wx3f7ca0c75b213380\"}"
, AssortmentCustomerInfoVo.class)
def getShoppingCartGoodsApportionRequestVo = JSON.parseObject("{\"shoppingCartInfoRequestVo\":{\"activityCode\":\"G1643164091158349\",\"buyType\":0,\"couponCode\":\"88709227085491207040\",\"couponCodes\":[{\"activityCode\":\"G1643164091158349\",\"couponCode\":\"88709227085491207040\",\"couponType\":7,\"discountAmount\":800,\"index\":1}],\"flag\":0,\"menuType\":\"saas\",\"orderType\":1,\"partnerId\":\"2581\",\"reachStoreType\":5,\"sendGoods\":[],\"sessionId\":\"eac53a53f8ae62def7f40cb1e47a1bd9791d95a8\",\"shopId\":\"229830\",\"trackingNo\":\"8283bc4c7e5f4bbb8b357e3c0bef7183\",\"useCouponFlag\":1,\"useCustomerScore\":2,\"version\":\"2.0.60.6\"}}"
, GetShoppingCartGoodsApportionRequestVo.class)
def premiumExchangeActivity = getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity()
def shoppingCartInfoRequestVo = getShoppingCartGoodsApportionRequestVo.getShoppingCartInfoRequestVo()
and: "mock掉接口返回的用户信息"
// customerInfoManager.getCustomerInfoByObject(_) >> customerInfoVo
Mockito.when(customerInfoManager.getCustomerInfoByObject(Mockito.anyString())).thenReturn(customerInfoVo)
when: "调用获取用户信息方法"
def response = shoppingCartNewServiceImpl.getShoppingCartGoods(_, _)
def response = shoppingCartNewServiceImpl.getShoppingCartGoods(shoppingCartInfoRequestVo, premiumExchangeActivity)
then: "验证返回结果是否符合预期值"
}
}
......@@ -24,6 +24,7 @@ import com.alibaba.fastjson.JSON
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.powermock.api.mockito.PowerMockito
import org.powermock.api.support.membermodification.MemberMatcher
import org.powermock.core.classloader.annotations.PrepareForTest
......@@ -51,6 +52,18 @@ class FishermanSpock extends Specification {
def itemService = new ItemServiceImpl()
def storeItemAdapter = new StoreItemAdapter()
def defaultPromotionService = new DefaultPromotionService()
def couponPromotionService = new CouponPromotionService()
def buySendPromotionService = new BuySendPromotionService()
def additionalPromotionService = new AdditionalPromotionService()
def timeSalePromotionService = new TimeSalePromotionService()
def setMealService = new SetMealServiceImpl()
def customerScoreService = new CustomerScoreService()
def xyDiscountService = new XyDiscountServiceImpl()
def buyAndGiftsPromotionService = new BuyAndGiftsPromotionService()
def materialPromotionService = new MaterialPromotionService()
def fullPromotionService = new FullPromotionService()
def assortmentSdkService = PowerMockito.mock(AssortmentSdkService)
def customerInfoManager = PowerMockito.mock(AssortmentCustomerInfoManager.class)
def productService = PowerMockito.mock(ProductServiceImpl.class)
......@@ -121,19 +134,29 @@ class FishermanSpock extends Specification {
and: "调三方反馈参数 为自己的参数对象 "
customerInfoManager.getCustomerInfoByObject(_) >> customerInfoVo
assortmentSdkService.getShoppingCart(_, _, _, _, _, _, _) >> goodList
productService.hasRequiredProducts(_, _, _, _) >> hasRequiredProducts
assortmentSdkService.checkShoppingCartSdk(_, _, _, _, _, _, _, _) >> checkCartRequest
activityClient.calculationDiscount(_) >> activityCalculationDiscountResponseDto
commonService.getOrgIdsAsString(_, _) >> null
commonService.getOrgIdsForCoupon(_, _) >> ["1e906bab-1800-4b00-8e36-29049d7f4efc", "391cec83-2b60-49a9-af2c-d8d6a813ce72", "16dc665e-8e03-41a8-83ae-95e92666d266"]
couponOnlineClient.getCouponDetails(_) >> responseDto
productClient.listProductInfos(_) >> productInfosDto
productClient.validateShopProduct(_) >> productBaseResponse
Mockito.when(assortmentSdkService.getShoppingCart(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(goodList)
Mockito.when(customerInfoManager.getCustomerInfoByObject(Mockito.any())).thenReturn(customerInfoVo)
Mockito.when(productService.hasRequiredProducts(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(hasRequiredProducts)
Mockito.when(assortmentSdkService.checkShoppingCartSdk(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(checkCartRequest)
Mockito.when(activityClient.calculationDiscount(Mockito.any())).thenReturn(activityCalculationDiscountResponseDto)
Mockito.when(commonService.getOrgIdsAsString(Mockito.any(), Mockito.any())).thenReturn(null)
Mockito.when(commonService.getOrgIdsForCoupon(Mockito.any(), Mockito.any())).thenReturn(["1e906bab-1800-4b00-8e36-29049d7f4efc", "391cec83-2b60-49a9-af2c-d8d6a813ce72", "16dc665e-8e03-41a8-83ae-95e92666d266"])
Mockito.when(couponOnlineClient.getCouponDetails(Mockito.any())).thenReturn(responseDto)
Mockito.when(productClient.listProductInfos(Mockito.any())).thenReturn(productInfosDto)
Mockito.when(productClient.validateShopProduct(Mockito.any())).thenReturn(productBaseResponse)
and: "静态方法mock"
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.DEFAULT_PROMOTION)).thenReturn(defaultPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.COUPON_DISCOUNT)).thenReturn(couponPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_ONE_SEND)).thenReturn(buySendPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.ADDITIONAL_BUY)).thenReturn(additionalPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.TIME_SALE)).thenReturn(timeSalePromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.SET_MEAL)).thenReturn(setMealService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.CUSTOMER_SCORE)).thenReturn(customerScoreService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.XY_DISCOUNT)).thenReturn(xyDiscountService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS)).thenReturn(buyAndGiftsPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.Material)).thenReturn(materialPromotionService)
PowerMockito.when(PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.FULL_REDUCTION)).thenReturn(fullPromotionService)
when: "调用方法逻辑"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment