0

鉴于以下...

api.checkIn = function (theUserID) {
    var uri;
    uri = 'some/uri/here/' + theUserID;
    return req.get(uri, {
        handleAs: 'json'
    });
};

api.checkIn(userID).then(function (res) {
  _displayMessage("Attendance Saved.");
},
function(error){
  console.log("An error occurred: " + error);
});

我希望测试“theUserID”,如果有问题完全绕过远程请求,并让返回的 Promise 对象触发它的错误方法。

我还想通过返回一个承诺对象但自动调用传递它的 JSON 的“成功/结果”函数来存根远程请求以进行测试,而不实际进行远程调用。

4

1 回答 1

1

假设您的代码使用的是 AMD、dojo 1.7 或 1.8。这应该可以解决问题:

api.checkIn = function (theUserID) {
    var promise = new Deferred(); // you'll want to require dojo/Deferred
    if(notValid(theUserID)){ // you'll need to implement your own validity test here
        promise.reject("your error of choice here");
    } else {
        promise.resolve("your response of choice here");
    }
    return promise;
};

您可能还想查看dojo/Deferred上的文档。

于 2013-02-28T10:20:29.860 回答