⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamicmockexample.java

📁 不管是测试驱动开发或者是其它的开发模式
💻 JAVA
字号:
/*  Copyright (c) 2000-2004 jMock.org
 */
package atest.jmock;

import org.jmock.Mock;
import org.jmock.MockObjectTestCase;


public class DynamicMockExample extends MockObjectTestCase
{
    public interface Market {
        String[] listStocks();

        int getPrice( String ticker );

        void buyStock( String ticker, int quantity );
    }

    public class Agent
    {
        Market market;

        public Agent( Market market ) {
            this.market = market;
        }

        public void buyLowestPriceStock( int cost ) {
            String[] stocks = market.listStocks();
            int cheapestPrice = Integer.MAX_VALUE;
            String cheapestStock = null;

            for (int i = 0; i < stocks.length; ++i) {
                int price = market.getPrice(stocks[i]);
                if (price < cheapestPrice) {
                    cheapestPrice = price;
                    cheapestStock = stocks[i];
                }
            }
            market.buyStock(cheapestStock, cost / cheapestPrice);
        }
    }

    public void testBuilderExample() {
        Mock market = mock(Market.class);
        Agent agent = new Agent((Market)market.proxy());

        market.stubs().method("listStocks").withNoArguments()
                .will(returnValue(new String[]{"IBM", "ORCL"}));
        market.expects(atLeastOnce()).method("getPrice").with(eq("IBM"))
                .will(returnValue(10));
        market.expects(atLeastOnce()).method("getPrice").with(eq("ORCL"))
                .will(returnValue(25));
        market.expects(once()).method("buyStock").with(eq("IBM"), eq(2));

        agent.buyLowestPriceStock(20);
    }

    public void xtestDynaMockExample() {
        Mock mockMarket = mock(Market.class);
        Agent agent = new Agent((Market)mockMarket.proxy());
//	
//	 
//	    mockMarket.invokedMethod("buyStock", "MSFT", new Integer(10)).void();
//
//		mockMarket.invokedMethod("buyStock", "MSFT", new Integer(10)).returns(true)
//			.expectOnce();
//			//.expectNever();
//			//.addMatcher(new MyExpectation());
//			
//		mockMarket.invokedMethod("listStocks").alwaysReturns(new Vector("MSFT", "ORCL"));
//		mockMarket.invokedMethod("getPrice", "MSFT").alwaysReturns(10);
//		mockMarket.invokedMethod("getPrice", "ORCL").alwaysReturns(50);
//		
//		mockMarket.invokedMethod(C.equal("buyStock"), C.eq(1)).
//			
//		mockMarket.methodName("listStocks").noParams()
//			.alwaysReturns("MSFT");
//
//		InvocationHandler listInvocation = mockMarket.methodName("listStocks").noParams()
//			.returns("MSFT")
//			.returns("ORCL")
//			.throwsException(new ....);
//
//		mockMarket.methodName("buyStock").params("MSFT", 10).returns(900)
//			.calledOnce()
//			.before(listInvocation);
//		mockMarket.methodName("buyStock").params("ORCL", 2).returns(100)
//			.calledOnce()
//			.before(listInvocation);
//
//		mockMarket.newInvocationHandler().addMatcher( new NameMatcher(new IsEqual("buyStock"))
//			.addMatcher( new ActualParameterMatcher( new Constraint[] { new IsEqual("MSFT"), new IsEqual(new Integer(10)})))
//			.addStub( new ReturnStub( new Integer(900) )));
//			
//
        agent.buyLowestPriceStock(1000);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -