使用 jasmine-node 在 Frisby JS 中忽略儿童测试
ignored children tests in Frisby JS with jasmine-node
我使用 Frisy 和 jasmine-node 来测试 Meteor API。
我想测试删除聊天应用程序中的讨论。为此,我需要在聊天中创建一个新的讨论并在讨论中添加一条消息。
我注意到如果我将它放在第二个 .then() 方法之后,我的测试会失败。它在第三个 .then() 之后也失败了。但是,它在第一个 .then() 方法之后正常工作。
带有显式失败测试的示例代码 expect(false).toBe(true);:
var frisby = require('frisby');
describe("chat update", function() {
it("message added", function(done) {
frisby.post('http://localhost:3000/api/chat', {
name: "remove"
})
.then(function (res) {
let id = res._body.id;
expect(false).toBe(true); // (1) it fails the test
frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage',
{
auteur: "Samuel",
message: "My message"
}
)
.then(function (res) {
expect(false).toBe(true); // (2) Without (1) it's ignored by frisby
frisby.post('http://localhost:3000/api/chat/remove',
{id: id}
)
.then(function (res) {
expect(false).toBe(true); // (3) Without (1) it's ignored by frisby
})
});
})
.done(done);
})
});
如果我 运行 测试,它将失败,感谢 expect(false).toBe(true); // (1) 它没有通过 test 行。
如果我删除这一行,测试将 运行 和 jasmine 验证它是正确的。
您知道不忽略 (2) 和 (3) 测试的方法吗?
终于,我找到了解决办法。
这是因为我忘记了 return 所有飞盘动作 (第一个除外),如以下代码所示:
var frisby = require('frisby');
describe("chat update", function() {
it("message added", function(done) {
frisby.post('http://localhost:3000/api/chat', {
name: "remove"
})
.then(function (res) {
let id = res._body.id;
return frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage',
{
auteur: "Samuel",
message: "My message"
}
)
.then(function (res) {
return frisby.post('http://localhost:3000/api/chat/remove',
{id: id}
)
.then(function (res) {
expect(false).toBe(true); // Will fail the test
})
});
})
.done(done);
})
});
您可能会注意到 return 运算符在 frisby.post() 之前。
希望对您有所帮助!
我使用 Frisy 和 jasmine-node 来测试 Meteor API。
我想测试删除聊天应用程序中的讨论。为此,我需要在聊天中创建一个新的讨论并在讨论中添加一条消息。
我注意到如果我将它放在第二个 .then() 方法之后,我的测试会失败。它在第三个 .then() 之后也失败了。但是,它在第一个 .then() 方法之后正常工作。
带有显式失败测试的示例代码 expect(false).toBe(true);:
var frisby = require('frisby');
describe("chat update", function() {
it("message added", function(done) {
frisby.post('http://localhost:3000/api/chat', {
name: "remove"
})
.then(function (res) {
let id = res._body.id;
expect(false).toBe(true); // (1) it fails the test
frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage',
{
auteur: "Samuel",
message: "My message"
}
)
.then(function (res) {
expect(false).toBe(true); // (2) Without (1) it's ignored by frisby
frisby.post('http://localhost:3000/api/chat/remove',
{id: id}
)
.then(function (res) {
expect(false).toBe(true); // (3) Without (1) it's ignored by frisby
})
});
})
.done(done);
})
});
如果我 运行 测试,它将失败,感谢 expect(false).toBe(true); // (1) 它没有通过 test 行。 如果我删除这一行,测试将 运行 和 jasmine 验证它是正确的。
您知道不忽略 (2) 和 (3) 测试的方法吗?
终于,我找到了解决办法。 这是因为我忘记了 return 所有飞盘动作 (第一个除外),如以下代码所示:
var frisby = require('frisby');
describe("chat update", function() {
it("message added", function(done) {
frisby.post('http://localhost:3000/api/chat', {
name: "remove"
})
.then(function (res) {
let id = res._body.id;
return frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage',
{
auteur: "Samuel",
message: "My message"
}
)
.then(function (res) {
return frisby.post('http://localhost:3000/api/chat/remove',
{id: id}
)
.then(function (res) {
expect(false).toBe(true); // Will fail the test
})
});
})
.done(done);
})
});
您可能会注意到 return 运算符在 frisby.post() 之前。 希望对您有所帮助!