そのため、データベース クラスを呼び出す User クラスを単体テストしています。だから現時点で私はこれを持っています -
User.prototype.getUsername = function() {
user = Database.loadUser(1);
return user.username;
}
Database.prototype.loadUser = function(userId) {
// Load user data from the database
return {
username: loadedUser.username,
password: loadedUser.password,
age: loadedUser.age
};
}
そこで、ユーザー テストがデータベース レイヤーから分離されるように、データベースの loadUser() 関数をモックします。モックされた loadUser() 関数が、実際の loadUser 関数と同じプロパティを持つオブジェクトを返すようにします -
MockDatabase.loadUser = function(userId)
return {
username: 'mockUsername',
password: 'mockPassword',
age: 1
};
}
それで大丈夫です。数日後、データベースの loadUser 関数のプロパティを次のように変更するとします。
Database.prototype.loadUser = function(userId) {
// Load user data from the database
return {
firstNanme: loadedUser.firstName,
surname: loadedUser.surname
password: loadedUser.password,
age: loadedUser.age
};
}
さて、私の User クラスはまだテスト中に MockDatabase.loadUser() 関数をモックとして使用しており、実際のプログラムを実行すると例外が発生しますが、実際の Database.loadUser 関数には 'ユーザー名のプロパティ。
では、この問題の解決策は何ですか?これは非常に一般的な状況だと思います。モックされた関数を実際の関数と常に同期させることも覚えておく必要がありますか? それは非常に非効率的でエラーが発生しやすい方法のように思えます..?