gpt4 book ai didi

javascript - expect失败时如何拦截error? Jasmine 和弗里斯比

转载 作者:行者123 更新时间:2023-11-28 20:11:45 26 4
gpt4 key购买 nike

我正在使用在 jasmine.js 之上运行的 frisby.js 创建 HTTP 测试。

我还必须创建一些 mongoDB 对象来进行测试。问题是当我想清理这些数据库对象时。当其中一个期望失败时,我想拦截它并调用我自己的清理函数。这意味着在每次失败的测试之后,我将无法从数据库中删除测试对象。<​​/p>

jasmine 中的 afterEach 函数无法正常工作,并且 jasmine 尚不支持 afterAll 或 beforeAll。这就是我今天进行测试的原因。

it("testing userform get with correct userID and expect correct return", function() {
var innerUserId = userID;
frisby.create('Should retrieve correct userform and return 200 when using a valid userID')
.get(url.urlify('/api/userform', {id: innerUserId}))
.expectStatus(200)
.afterJSON(function(userform){
// If any of these fail, the after function wont run.
// I want to intercept the error so that I can make sure that the cleanUp function is called
// afterEach does not work. I have tried with done()
var useridJSON = userform.UserId.valueOf();
var firstnameJSON = userform.firstname.valueOf();
var surnameJSON = userform.surname.valueOf();
expect(firstnameJSON).toMatch(testUser.firstName);
expect(surnameJSON).toMatch(testUser.surname);
expect(useridJSON).toMatch(innerUserId);
})
.after(function(){
cleanUp(innerUserId);
})
.toss();
});

我想知道是否有办法拦截 frisby 或 jasmine 中“expect”的错误,以便我可以在退出前调用我自己的清理函数。

完整示例 here

最佳答案

解决此问题的最快方法是将错误代码包装在 try-catch 中。这是因为如果发生 javascript 错误,jasmine 将不会继续运行断言。这与断言错误不同。如果发生断言错误,jasmine 和 frisby 将继续测试所有其他断言,然后执行“after”函数。

        .afterJSON(function(userform){
try {
var useridJSON = userform.UserId.valueOf();
var firstnameJSON = userform.firstname.valueOf();
var surnameJSON = userform.surname.valueOf();
catch(e) {
cleanUp(innerUserId);
// Can do a throw(e.message); here aswell
}
expect(firstnameJSON).toMatch(testUser.firstName);
expect(surnameJSON).toMatch(testUser.surname);
expect(useridJSON).toMatch(innerUserId);
})

这不是很漂亮的方法,但是有效。

我最后添加了 throw(e) 并将期望放在 finally 范围内。这样我就让 jasmine 展示了测试中出现的所有错误。

关于javascript - expect失败时如何拦截error? Jasmine 和弗里斯比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26424639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com