用户登录

测试里面的一些功能是用 trait 这种东西提供的 .. 在不同的包里面可能会定义这些 trait ... 打开之前创建的这个 functional 测试 .. 再从 Test/Suite 里面把 trait 解构出来 ..

在测试里使用 trait 可以这样 ... 用一下 trait ... 把要使用的 trait 的名字告诉它就行了 .. 比如 lucid 包里定义了一个 DatabaseTransactions 这个 trait ..

可以先去看一下 .. 打开 node_modules .. @adonisjs .. lucid ... src ... 在 Traits 下面,有个 DatabaseTransactions.js ..

在这个 Trait 里面,有了测试上两个生命周期方法 .. beforeEach .. 还有 afterEach ... 每个测试运行之前,它会开始一个全局的 Transaction ... 测试完成以后,又会 rollback 这个 Transaction ...

就是,如果测试里面有一些数据库操作,比如在操作库里插入新的数据记录 ... 在测试结束以后,会回滚这个操作 .. 插入数据记录,回滚的时候就是删除掉这条数据记录 ..

再回到我们的这个测试 .. 先导入一下应用里的 Post 这个模型 .. 位置是 App/Models/Post ..

创建一个 test ... 标题是 use traits in test ... 一个回调 ... 在这个测试里面, 添加一个 post ... 它是一个对象 .. 里面添加一个 title .. 内容的标题 .. 还有一个 content ,内容的正文 ..

下面用一下 Post 模型的 create ,创建一条新的数据记录 .. 把上面定义的 post 交给这个方法 ..

然后暂时我们先把这个 DatabaseTransactions 注释掉 .. 看看不使用它的时候会发生什么 ...

回到命令行 .. adonis test .. 运行一下测试 ..

再打开一个数据库客户端 ... 打开应用的数据库 ... 浏览一下应用的 posts 这个数据表 ... 你会看到,这里会有刚才我们在测试里创建的一条数据记录 ..

再把它删除掉 ...

回到测试 ... 取消注释这个 DatabaseTransactions ..

然后再去运行一下测试 ... adonis test ...

回到数据库客户端 ... 刷新一下 posts 表里的内容 ... 这回就不会出现在测试里插入的数据记录了 .. 因为在测试里用了 DatabaseTransactions 这个 Trait ,在测试运行以后,会 rollback 数据操作 ..

在测试中使用 Trait(DatabaseTransactions)《 Node.js 应用:测试 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点