私は、内部の単一のユーザーを取得する機能を備えたユーザー コレクションの作成に取り組んでいます。これは別のシステムからの照合に使用されるため、ユーザーを一度ロードしてから、後で微調整/照合できるようにしたいと考えています。ただし、内部メソッドから外部ユーザー コレクションにアクセスする際に問題があります。
function Users(){
var allUsers;
this.getUsers = function () {
// ajax to that Jasmine behaves
$.ajax({
url: '../app/data/jira_users.json',
async: false,
dataType: 'json',
success: function(data) {
allUsers = data;
}
});
return allUsers;
};
this.SingleUser = function (name) {
var rate = 0.0;
var position;
this.getRate = function () {
if(position === undefined){
console.log('>>info: getting user position to then find rate');
this.getPosition();
}
$.ajax({
url: '../app/data/rates.json',
async: false,
dataType: 'json',
success: function(data) {
rate = data[position];
}
});
return rate;
};
this.getPosition = function () {
console.log(allUsers);
//position = allUsers[name];
return position;
};
//set name prop for use later I guess.
this.name = name;
};
}
そして、これらすべてを開始するテスト:
it("get single user's position", function(){
var users = new Users();
var someone = new users.SingleUser('bgrimes');
var position = someone.getPosition();
expect(position).not.toBeUndefined();
expect(position).toEqual('mgr');
});
allUsers は常に未定義であるため、getPosition メソッドが問題です (明らかな場合があります)。ここにあるのはまだ別の試みです。いくつかの方法を試しました。問題は、最初に Users.getUsers がどのように呼び出されるかだと思いますが、外側と内側の変数を使用しているかどうかもわかりません。