gpt4 book ai didi

asynchronous - Jasmine如何测试异步调用的返回值?

转载 作者:IT王子 更新时间:2023-10-29 06:14:53 25 4
gpt4 key购买 nike

我正在使用 jasmine 来测试 redis 的特性。由于redis的API都是异步调用的,不知道如何用jasmine expect().toBe() 测试结果。我总是看到错误:

            throw err;
^
TypeError: Cannot call method 'expect' of null

这是我的测试代码:

var redis = require('redis');

describe("A suite for redis", function() {
var db = null;

beforeEach(function() {
db = redis.createClient();
// if you'd like to select database 3, instead of 0 (default), call
// db.select(3, function() { /* ... */ });
db.on("error", function (err) {
console.log("Error " + err);
});
});

afterEach(function() {
db.quit();
});

it('test string', function(){
db.set('str_key1', 'hello', redis.print);
db.get('str_key1', function(err,ret){
expect(ret).toBe('hello');
});
});
});

最佳答案

对于同步调用,可以使用 Jasmine 的异步特性,传递一个 done()beforeEach()it(),见: http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support

因此,您的代码可以更改为:

var redis = require('redis');

describe("A suite for redis", function() {
var db = null;

beforeEach(function(done) {
db = redis.createClient();
// if you'd like to select database 3, instead of 0 (default), call
// db.select(3, function() { /* ... */ });
db.on("error", function (err) {
console.log("Error " + err);
});
done();
});

afterEach(function(done) {
db.quit();
done();
});

it('test string', function(done){
db.set('str_key1', 'hello', redis.print);
db.get('str_key1', function(err,ret){
expect(ret).toBe('hello');
done(); // put done() after expect(), or else expect() may report error
});
});
});

关于asynchronous - Jasmine如何测试异步调用的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27467768/

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