首页 文章

使用restler进行jasmine E2E测试的回调

提问于
浏览
0

我正在使用restler和jasmine nodejs模块测试restful api . 我已经创建了测试文件来测试单个api调用和测试需要相互输入的api调用组 . 如何使用正确的jasmine描述 - 期望块格式,从一个这样的api调用提供反馈/输出到另一个api调用 . 如果我尝试在getPhoneOtp之后将verifyOtp函数放在另一个it-block中,那么在获取OTP成功后它就不会执行,从而失败 . 现在我只在控制台中读取输出而不能使用jasmine expect函数,因为我无法在it-block中包含verifyOtp函数 . 任何建议,将不胜感激 . 这是代码 .

var restler = require('restler');
var fs = require('fs');
var colors = require('colors');
var util = require('util');
var config = require('./config.js') ;
var baseUrl = config.baseUrl ;

describe("LEC phone api's tests", function () {

    var _token;
    var phone = Math.round(Math.random() * 1000000000);
    var otp;

    console.log("Test started on "+baseUrl) ;



    function verifyOtp(otpPassed) {

        var success = 0 ;
            restler.post(baseUrl + "phone/verifyotp", {
                data: {
                    _token: _token,
                    phoneNumber: phone,
                    otp: otpPassed

                },
                headers: {
                    'X-Requested-With': 'XMLHttpRequest'
                }
            }).on("success", function (data) {
                success = 1 ;
                console.log(colors.blue("Success of verify otp")) ;

                console.log(data);

                var userInfo = {
                    firstName: "John",
                    lastName: "Doe",
                    description: "I'm a getting used for testing .",
                    zipCode: "71151",
                    street: "Testing avenue",
                    city: "San Fransisco",
                    state: "California",
                    email: "john@doe.com",
                    image: ""

                };


            }).on("complete", function (data) {
                if(!success)
                console.log(colors.red(util.inspect(data))) ;
            });
    };


    it("should get the token", function () {
        var success = 0 ;
        restler.get(baseUrl + "/basic/token")
            .on("success", function (data) {
                success = 1;
                console.log(colors.blue("Success of get the Token")) ;
                console.log(data);
                _token = data.token;


            }).on("complete", function (data) {
                if(!success)
                    console.log(colors.red(util.inspect(data))) ;
            });

    });

    it("should get the OTP", function () {
        var success = 0 ;
        restler.post(baseUrl + "phone/getphoneotp", {
            data: {
                _token: _token,
                phoneNumber: phone
            },
            headers: {
                'X-Requested-With': 'XMLHttpRequest'
            }
        }).on("success", function (data) {
            success = 1;
            console.log(colors.blue("Success of get the OTP")) ;
            console.log(data);
            otp = data.otp;

            verifyOtp(otp);
        }).on("complete", function (data) {
            if(!success)
                console.log(colors.red(util.inspect(data))) ;        });
    });

});

1 回答

  • 0

    我阅读了关于jasmine中异步测试的堆栈溢出的几个答案,并且能够在此帮助下编写代码 . 这是代码 .

    var restler = require('restler');
    var fs = require('fs');
    var colors = require('colors');
    var util = require('util');
    var config = require('./config.js');
    var baseUrl = config.baseUrl;
    
    describe("LEC phone api's tests", function () {
    
        var apiCall;
        var _token;
        var phone = Math.round(Math.random() * 1000000000);
        var otp, otpPassed;
    
        console.log("Test started on " + baseUrl);
        it("should get the token", function () {
    
    
                restler.get(baseUrl + "/basic/token")
                    .on("success", function (data) {
                        success = 1;
                        console.log(colors.blue("Success of get the Token"));
                        console.log(data);
                        _token = data.token;
    
                        apiCall = 1;
    
                    }).on("complete", function (data) {
                        if (!success)
                            console.log(colors.red(util.inspect(data)));
                    });
    
        });
    
        it("should get the otp", function () {
    
            waitsFor(function () {
                return apiCall == 1;
            });
            runs(function () {
                var success = 0;
                restler.post(baseUrl + "phone/getphoneotp", {
                    data: {
                        _token: _token,
                        phoneNumber: phone
                    },
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    }
                }).on("success", function (data) {
                    success = 1;
                    console.log(colors.blue("Success of get the OTP"));
                    console.log(data);
                    otp = data.otp;
    
    
                    otpPassed = otp ;
    
                    apiCall = 2 ;
                }).on("complete", function (data) {
                    if (!success)
                        console.log(colors.red(util.inspect(data)));
                });
            });
    
        });
    
        it("should verify the otp", function () {
    
    
            var success = 0;
            waitsFor(function() {
               return apiCall == 2 ;
            });
            runs(function() {
                restler.post(baseUrl + "phone/verifyotp", {
                    data: {
                        _token: _token,
                        phoneNumber: phone,
                        otp: otpPassed
    
                    },
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    }
                }).on("success", function (data) {
                    success = 1;
                    console.log(colors.blue("Success of verify otp"));
    
                    console.log(data);
    
                    apiCall = 3 ;
    
                }).on("complete", function (data) {
                    if (!success)
                        console.log(colors.red(util.inspect(data)));
                });
    
            });
        });
    
    
    
        it("should register the user", function () {
    
            var success = 0;
            var userInfo = {
                firstName: "John",
                lastName: "Doe",
                description: "I'm a getting used for testing .",
                zipCode: "71151",
                street: "Testing avenue",
                city: "San Fransisco",
                state: "California",
                email: "john@doe.com",
                image: ""
    
            };
    
            waitsFor(function() {
                return apiCall == 3 ;
            }) ;
            runs(function() {
    
    
                fs.stat('index.jpeg', function (err, stats) {
                    console.log(stats);
                    console.info("user register started");
    
                    restler.post(baseUrl + 'user/register', {
                        multipart: true,
                        headers: {
                            'X-Requested-With': 'XMLHttpRequest'
                        },
                        data: {
                            token: _token,
                            phone: phone,
                            first_name: userInfo.firstName,
                            last_name: userInfo.lastName,
                            description: userInfo.description,
                            zip_code: userInfo.zipCode,
                            street: userInfo.street,
                            city: userInfo.city,
                            state: userInfo.state,
                            email: userInfo.email,
                            device_os: "ios",
                            device_token: "asdfas7sad6f899998j",
                            "folder_id": "0",
                            "image": restler.file("index.jpeg", null, stats.size, null, "image/jpeg")
                        }
                    }).on("success", function (data) {
                        success = 1;
                        console.log(colors.blue("Success of user register"));
    
                        console.log(data);
    
                    }).on("complete", function (data) {
                        if (!success)
                            console.log(colors.red(util.inspect(data)));
                    });
    
                });
    
            });
        });
    
    });
    

相关问题