我正在使用 Oauth 在我的 AngularJS 应用程序中管理会话用户。我的 Angular 应用程序需要知道有关会话用户的信息,因为它在我的 $resource 对象中使用(用于进行 GET /user/:user/projects 之类的 REST 调用)。我希望这个用户变量是全局和同步的,因此使用 $resource 或 $http 进行异步调用以获取用户将样板添加到需要此会话用户的代码中(因为它必须等待用户信息从服务器返回)。
现在我正在使用这个肮脏的黑客来解决这个问题:在我的 index.ejs 文件中(注意用户是用 ejs 呈现在服务器端的)
<script type="text/javascript">
var session_user = <%- user %>;
</script>
然后我做
$rootScope.user = session_user
问题是当我对控制器进行单元测试时,当然 session_user 没有定义。
我在想也许我可以创建一个返回这个session_user
变量的服务,所以我可以使用模拟进行测试。还有其他想法吗?解决此类问题的推荐方法是什么?