PlayFramework完整实现一个APP(四)
可以添加以下方法,运行Test前清空数据
@Before
public void setup() {
Fixtures.deleteAll();
}
1.编写复杂的测试用例
编辑/test/data.yml
# User(bob):
# email: bob@Gmail.com
# passWord: secret
# fullname: Bob
内容替换为 http://play-framework.herokuapp.com/zh/files/data.yml
添加测试用例
@Test
public void fullTest() {
Fixtures.loadModels("data.yml");
// Count things
assertEquals(2, User.count());
assertEquals(3, Post.count());
assertEquals(3, Comment.count());
// Try to connect as users
assertNotNull(User.connect("bob@gmail.com", "secret"));
assertNotNull(User.connect("jeff@gmail.com", "secret"));
assertNull(User.connect("jeff@gmail.com", "badpassword"));
assertNull(User.connect("tom@gmail.com", "secret"));
// Find all of Bob's posts
List<Post> bobPosts = Post.find("author.email", "bob@gmail.com")
.fetch();
assertEquals(2, bobPosts.size());
// Find all comments related to Bob's posts
List<Comment> bobComments = Comment.find("post.author.email",
"bob@gmail.com").fetch();
assertEquals(3, bobComments.size());
// Find the most recent post
Post frontPost = Post.find("order by postedAt desc").first();
assertNotNull(frontPost);
assertEquals("About the model layer", frontPost.title);
// Check that this post has two comments
assertEquals(2, frontPost.comments.size());
// Post a new comment
frontPost.addComment("Jim", "Hello guys");
assertEquals(3, frontPost.comments.size());
assertEquals(4, Comment.count());
}
关于如何使用 data.yml,可以参考 http://play-framework.herokuapp.com/zh/yaml
2.初始化数据
开始创建应用程序的第一个页面。这个页面就会显示最近的帖子,以及旧的文章的列表。
在开发第一个屏幕之前我们需要一件事。创建测试数据。将默认数据注入到博客的一个方法是加载文件在应用程序的加载时间。要做到这一点,我们将创建一个引导工作。
创建Bootstrap.java
package models;
import play.*;
import play.jobs.*;
import play.test.*;
@OnapplicationStart
public class Bootstrap extends Job {
public void doJob() {
// Check if the database is empty
if (User.count() == 0) {
Fixtures.loadModels("initial-data.yml");
}
}
}
initial-data.yml 使用data.yml的内容,创建的默认数据
@OnApplicationStart 标识方法在应用程序启动时运行
3.开发首页
修改Application.java 的index()方法
public static void index() {
Post frontPost = Post.find("order by postedAt desc").first();
List<Post> olderPosts = Post.find("order by postedAt desc").from(1)
.fetch(10);
render(frontPost, olderPosts);
}
修改Application/index.html
#{extends 'main.html' /}
#{set title:'Home' /}
#{if frontPost}
<div class="post">
<h2 class="post-title">
<a href="#">${frontPost.title}</a>
</h2>
<div class="post-metadata">
<span class="post-author">by ${frontPost.author.fullname}</span>
<span class="post-data">by ${frontPost.postedAt.format('MMM dd')}</span>
<span class="post-comments">
|
${frontPost.comments.size()?:'no'}
comment${frontPost.comments.size().pluralize()}
#{if frontPost.comments}
, latest by ${frontPost.comments[0].author}
#{/if}
</span>
</div>
<div class="post-content">
${frontPost.content.nl2br()}
</div>
</div>
#{if olderPosts.size()>1}
<div class="older-posts">
<h3>Older posts <span class="from">from this blog</span></h3>
#{list items:olderPosts, as:'oldPost'}
<div class="post">
<h2 class="post-title">
<a href="#">${oldPost.title}</a>
</h2>
<div class="post-metadata">
<span class="post-author">
by ${oldPost.author.fullname}
</span>
<span class="post-date">
${oldPost.postedAt.format('dd MMM yy')}
</span>
<div class="post-comments">
${oldPost.comments.size()?:'no'}
comment${oldPost.comments.size().pluralize()}
#{if oldPost.comments}
- latest by ${oldPost.comments[0].author}
#{/if}
</div>
</div>
</div>
#{/list}
</div>
#{/if}
#{/if}
#{else}
<div class="empty">
There is currently nothing to read here.
</div>
#{/else}
4.打开站点
以上就是PlayFramework完整实现一个APP(四)的内容,更多相关内容请关注PHP中文网(www.php.cn)!
下一篇: 关于CSS3常用的动画效果分享
推荐阅读
-
python实现对一个完整url进行分割的方法
-
Java实现一个顺序表的完整代码
-
Agora 开源 | 一个 Demo,帮你快速实现社交直播四大场景
-
实现一个完整的Node.js RESTful API的示例
-
入门级带你实现一个安卓智能家居APP
-
利用Python函数实现一个万历表完整示例
-
iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)
-
从一个点子到一个社区APP,是如何通过.NET实现的?——“文林物业系统”APP介绍及采访记录
-
Android 启动另一个App/apk中的Activity实现代码
-
[Android App]IFCTT,即:If Copy Then That,一个基于IFTTT的"This"实现