jasmine-node waitsFor()停止所有将来的运行()

时间:2013-06-19 21:14:15

标签: node.js jasmine jasmine-node

第一次运行会创建一个用户,第二次运行会从服务器获取用户。 WaitsFor应该导致第二次运行等到第一次运行完成。但是,在运行node-jasmine时,测试会在打印before: 51c21c1ef463390000000008后停止,而不会发出get请求。

我已经尝试取出waitsFor,但这会导致get请求发生在post请求之前,这会导致它失败,因为它取决于新用户的userid

发生了什么事?

var request = require('request');

describe("User", function(){
  var userid;
  it ("creates user", function(){

    runs(function(){
      var username = 'test' + Math.floor((Math.random()*100000)+1);

      var body = {
        username: username,
        email: username + "@test.com",
        password: username + "@test.com"
      };

      var options = {
        uri: 'http://localhost:3000/api/user',
        method: 'POST',
        headers: {
          'Content-type': 'application/json'
        },
        body: JSON.stringify(body)
      };


      request(options, function(err, res, body) {
        expect(res.statusCode).toEqual(200);
        console.log(body);
        var newUser = JSON.parse(body)[0];
        userid = newUser._id;
        console.log("before: "+ userid);

        expect(newUser.toBeTruthy());
      });
    });

    waitsFor(function() {
      console.log(typeof userid != "undefined");
      return (typeof userid != "undefined");
    }, "userid is never set", 10000);

    //it ("gets user", function() {
    runs(function(){
      expect(userid).toBeFalsy();
      console.log("this: "+userid);
      request.get("http://localhost:3000/api/user/" + userid, function(err, res, body){
        console.log("statuscode:" + res.statusCode);
        expect(res.statusCode).toEqual(2000);
        expect(body).toBeTruthy();
        console.log('Response: ' + body);
      });
    });
  });
});

0 个答案:

没有答案