jmockit 的使用示例-02完整的Mock步骤

package jmockit.sample;

import jmockit.target.OfferPostAction;
import jmockit.target.WinportUrlServiceImpl;
import junit.framework.Assert;
import mockit.Mocked;
import mockit.NonStrictExpectations;
import mockit.Verifications;

import org.junit.Test;
/**
 * 一个完整的Mock会有三个步骤,步骤一、record (录制);步骤二、replay 在此阶段,录制的方法可能会被调用;步骤三、验证。如果是Expectations就没有必要做Verifications了。
 * @author Ginge
 *
 */
public class RecordReplayVerificationTest {

	@Mocked
	private WinportUrlServiceImpl winportUrlService = null;

	private OfferPostAction offerPostAction = new OfferPostAction();

	@Test
	public void testofferPostActionExecute() {
		final String memberId = "test2009";
		// 步骤一、record (录制)
		new NonStrictExpectations() {
			{
				// 期望被mock的调用,以及被调用时返回的结果
				winportUrlService.hasWinport(memberId);
				result = false; // 也可以是returns(false);
				// 总共可以调用的次数
				times = 1;
			}
		};

		// 步骤二、replay 在此阶段,录制的方法可能会被调用
		Assert.assertEquals(false, offerPostAction.hasWinport(memberId));
		
		try{
			offerPostAction.getWinportUrlThrowException(memberId);
		}catch(Exception e){
			//fully mock,默认完全被mock,到这里就注定失败
			Assert.fail();
		}
		
		

		// 步骤三、验证步骤二中,mock方法是否被调用,本步骤可以省略
		new Verifications() {
			{
				winportUrlService.hasWinport(withAny(""));
				times = 1;
			}
		};
	}
}

 

你可能感兴趣的:(jmock)