<!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> | |