| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
| "http://www.w3.org/TR/html4/loose.dtd"> |
| |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>Tests</title> |
| <link rel="stylesheet" type="text/css" href="jsunit/css/jsUnitStyle.css"> |
| <script language="JavaScript" type="text/javascript" src="../../jsunit/app/jsUnitCore.js"></script> |
| <script language="JavaScript" type="text/javascript" src="../mock4js.js"></script> |
| <script language="JavaScript" type="text/javascript" src="PriceService.js"></script> |
| <script language="JavaScript" type="text/javascript"> |
| |
| Mock4JS.addMockSupport(this); |
| |
| var mockPriceFetcher; |
| var mockPriceCache; |
| var priceService; |
| |
| function setUp() { |
| Mock4JS.clearMocksToVerify(); |
| mockPriceFetcher = mock(PriceFetcher); |
| mockPriceCache = mock(PriceCache); |
| priceService = new PriceService(mockPriceFetcher.proxy(), mockPriceCache.proxy()); |
| } |
| |
| function tearDown() { |
| Mock4JS.verifyAllMocks(); |
| } |
| |
| function testGetsPriceFromFetcherWhenPriceNotInCache() { |
| mockPriceCache.expects(once()).getCachedPrice("USDGBP").will(returnValue(null)); |
| mockPriceFetcher.expects(once()).getPriceFromServer("USDGBP").will(returnValue(123.4)); |
| mockPriceCache.expects(once()).setCachedPrice("USDGBP", 123.4); |
| |
| var result = priceService.getPrice("USDGBP"); |
| |
| assertEquals("Should have returned price from server", 123.4, result); |
| } |
| |
| function testDoesntGetsPriceFromFetcherWhenPriceAlreadyInCache() { |
| mockPriceCache.expects(once()).getCachedPrice("USDGBP").will(returnValue(123.4)); |
| mockPriceCache.expects(never()).setCachedPrice(); |
| mockPriceFetcher.expects(never()).getPriceFromServer("USDGBP"); |
| |
| var result = priceService.getPrice("USDGBP"); |
| |
| assertEquals("Should have returned price from cache", 123.4, result); |
| } |
| |
| </script> |
| </head> |
| |
| <body> |
| <h1>JsUnit Tests</h1> |
| |
| <p>This page contains some JsUnit tests. To see them, take a look at the source.</p> |
| </body> |
| </html> |
| |