| 제목 | 테스트 결과를 보다 깔끔하게 보는 방법 | ||
|---|---|---|---|
| 글쓴이 | 홍구2 | 작성시각 | 2019/01/10 21:02:12 |
|
|
|||
|
CI3에 있는 기본 report() 페이지가 디자인이 별로라서, 조금 더 직관적이고 보기 편하기 위해 만들어 보았습니다.
모든 테스트가 성공했을 때는 아래와 같이 보이도록 했습니다.
테스트 중 하나라도 실패한 경우 아래와 같이 표시됩니다.
##### 사용방법 ######
/* in test controller */
// 아래와 같이 테스트 결과를 result 배열을 프론트에 보내주세요.
$this->load->view('test_view', [
'result' => $this->unit->result()
]);
/* file: test_view.php */
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TestView</title>
<style>
#app {
padding: 50px;
width: 100vw;
height: 100vh;
}
#app.some-failed {
background: #bf360c;
color:#fff;
}
#app.some-failed .label-passed {
background:rgba(0,0,0,0.3);
}
#app small {
font-weight: 400;
opacity: 0.6;
}
#app table th {
vertical-align: middle;
}
#app table td {
font-weight:bold;
}
#app table th,
#app table td {
border-top-color: rgba(0,0,0,0.1);
}
#app .label {
font-size: 15px;
display: inline-block;
width: 75px;
padding: 6px 0;
}
#app .label-passed {
background:#5cb85c;
}
#app .label-failed {
background: white;
color: #d9534f;
}
</style>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app" :class="{'some-failed': failed > 0}">
<div id="dashboard">
</div>
<table class="table">
<tbody>
<tr v-for="(row, index) in rows">
<th>
<span :class="{label:true, 'label-passed': row['Result']==='Passed', 'label-failed': row['Result']!=='Passed'}">
{{row['Result']}}
</span>
</th>
<td>
{{row['Test Name']}}
<div>
<small>{{row['File Name']}}:{{row['Line Number']}}</small>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
new Vue({
el: '#app',
data: {
rows: <?php echo json_encode($result); ?>,
},
mounted: function() {
document.title = this.failed > 0 ? this.failed + ' Tests Failed' : 'All Passed';
},
computed: {
failed: function() {
var failed = this.rows.filter(function(row){
return row.Result !== 'Passed'
}).length;
return failed;
},
}
})
</script>
</html>
|
|||
| 다음글 | CI3에서 CSRF 와 AJAX 사용시 팁.. (2) | ||
| 이전글 | now() 와 sysdate()의 차이 (4) | ||
|
한대승(불의회상)
/
2019/01/11 09:02:49 /
추천
0
|
깔끔하고 정제된듯한 느낌..
잘 쓰겠습니다. ^^