FuncUnitを使ってみた〜画面テストの自動化

FuncUnitを使った画面テストの自動化は、こんな感じ(動画が小さいので、フルスクリーンにして見て下さい)。

動画中に赤丸が動いているが、それはmoveメソッドの動き。つまり、赤丸が画像に被さることが、mouseOverを意味する。

#初めてYouTubeに動画をアップロードしてみた。見づらいなぁ。どうすれば・・・。
#キャプチャは、Firefoxのアドオン「Capture fox」を使用した。

■テストケース(funcunit_test.js)の一部

//テストモジュール3
module("Myapp TestGropu 3 ",{
	setup : function(){
		S.open("myapp.html")
	}
});

test("Daken Test", function(){
	//id属性値がidのinputタグに「Test ID」と入力する
	var testId = "Test ID";
	var selector1 = 'input[id="id"]';
	S(selector1).type(testId, function(){
		equals(S(selector1).val(),  testId, "id input test");
	});

	//id属性値がpassWordのinputタグに「Test PassWord」と入力する
	var testPass = "Test PassWord";
	var selector2 = 'input[id="passWord"]';
	S(selector2).type(testPass, function(){
		equals(S(selector2).val(), testPass, "password input test");
	});
	
	//id属性値がstrToBeLinkedのinputタグに「Yahoo Japan!」と入力する
	var testLink = "Yahoo Japan!";
	var selector3 = 'input[id="strToBeLinked"]';
	S(selector3).type(testLink, function(){
		//inputタグへの入力が正しく行われたかのテスト
		equals(S(selector3).val(), testLink, "str input test");
		
		//フォーカスアウトする
		//テスト対象画面の仕様では、リンクが貼られた文字列が表示される
		S(selector3).trigger('focusout');	
		
		//リンクが正しいかのテスト
		var ActualLinkedStr = S('#strLinked').html();
		var ExpectedLinkedStr = '<a href="http://www.yahoo.co.jp">Yahoo Japan!</a>';
	
		//リンクが正しいかのテスト
		equals(ActualLinkedStr, ExpectedLinkedStr, "Link test");
	});
	
	//画像表示テスト
	var selector4 = '#submitBtn';
	S(selector4).click(undefined, function(){
		var ActualLinkedImg = S('#downloadedImg').attr('style');
		var ExpectedLinkedImg = 'display: inline;';
		
		//画像が正しいかのテスト
		equals(ActualLinkedImg, ExpectedLinkedImg, "Img test");
	});
});

■テスト対象の画面(myapp.html)の一部

		<title>My Demo App</title>
		<script src="./jquery-1.5.2.min.js" type='text/javascript'></script>
		<script type='text/javascript'>
		$(document).ready(function(){
			var returnLinkedArg = function(arg, url){
				arg = "<a href=" + "\'" + url + "'" + ">" + arg + "</a>";
				return arg;
			};
		 	//フォーカスアウトのタイミングで文字列を表示する
		 	$('#strToBeLinked').bind("focusout", function(){
		 		var str = returnLinkedArg($('#strToBeLinked').val(), 'http://www.yahoo.co.jp');
		 		$('#strLinked')[0].innerHTML = str;
		 	});
		 	
		 	//クリックのタイミングで画像を表示する
		 	$('#submitBtn').bind("click", function(){
		 		$('#downloadedImg').attr('style', 'display:inline');
		 	});
		 }); 
		</script>
	</head>
	<body>
		<h2>FuncUnit Demo</h2>
		<h2>Type something in a textbox and Click "Add input" button:</h2>
		<input type="text" id="typehere"/>
		<input type='button' value="Add input" id='add'/>
		<div id='seewhatyoutyped'>Original string</div><br>
		
		<h2>Move mouse over the image below to change it into another:</h2>
		<ul>
			<img id='giko_kabe' src="./img/giko_kabe.jpg" alt='giko' width="150" height="150"/>
			<img id='downloadedImg' src="./img/giko_w.jpg" alt='giko' width="150" height="150" style="display:none;"/>
		</ul>
		<h2>Input value and submit Test:</h2>
		<ol>
			<li>ID<input type="text" value="" id="id"/></li>
			<li>PassWord<input type="password" value="" id="passWord"/></li>
			<li>Link<input type="text" value="" id="strToBeLinked"/>
			</li>
			<div id="strLinked"/></div>
			<li>隠し画像表示</li>
			<input id="submitBtn" type="button" value="画像表示"/><br>
		</ol>