我是新手,我一直在寻找编写适当功能测试的方法(或标准),但我仍然有许多未解决的问题。我正在使用 FrisbyJS 为我的 NodeJS API 应用程序编写功能测试并jasmine-node
运行它们。
我浏览了 Frisby 的文档,但对我来说并没有什么成果。
这是一个场景:
- 来宾可以创建一个
User
. (显然,不允许用户名重复) - 创建后
User
,他可以登录。成功登录后,他将获得一个访问令牌。 - A
User
可以创建一个Post
. 然后 aPost
can haveComment
,依此类推... - A
User
一经创建就无法删除。(不是来自我的 NodeJS 应用程序)
Frisby 文档说的是,我应该在测试中编写一个测试。
例如(full-test.spec.js):
// Create User Test
frisby.create('Create a `User`')
.post('http://localhost/users', { ... }, {json: true})
.expectStatus(200)
.afterJSON(function (json) {
// User Login Test
frisby.create('Login `User`')
.post('http://localhost/users/login', { ... }, {json: true})
.expectStatus(200)
.afterJSON(function (json) {
// Another Test (For example, Create a post, and then comment)
})
.toss();
})
.toss();
这是编写功能测试的正确方法吗?我不这么认为......它看起来很脏。
我希望我的测试是模块化的。每个测试的单独文件。如果我为每个测试创建单独的文件,那么在为 编写测试时Create Post
,我需要一个User
访问令牌。
总而言之,问题是:如果事物相互依赖,我应该如何编写测试?
Comment
依赖于Post
。Post
依赖于User
。