在我的主要
稍后我想测试控制器如何判断 cookie 是否存在,因此我嵌套了以下描述:
describe
中,我有以下内容:beforeEach(inject(function(...) {
var mockCookieService = {
_cookies: {},
get: function(key) {
return this._cookies[key];
},
put: function(key, value) {
this._cookies[key] = value;
}
}
cookieService = mockCookieService;
mainCtrl = $controller('MainCtrl', {
...
$cookieStore: cookieService
}
}
稍后我想测试控制器如何判断 cookie 是否存在,因此我嵌套了以下描述:
describe('If the cookie already exists', function() {
beforeEach(function() {
cookieService.put('myUUID', 'TEST');
});
it('Should do not retrieve UUID from server', function() {
expect(userService.getNewUUID).not.toHaveBeenCalled();
});
});
然而,当我将更改应用到cookieService
时,它不会被保留到正在创建的控制器中。 我的方法是否有误?
谢谢!
编辑:已更新测试代码,这是我使用$cookieStore的方式:
var app = angular.module('MyApp', ['UserService', 'ngCookies']);
app.controller('MainCtrl', function ($scope, UserService, $cookieStore) {
var uuid = $cookieStore.get('myUUID');
if (typeof uuid == 'undefined') {
UserService.getNewUUID().$then(function(response) {
uuid = response.data.uuid;
$cookieStore.put('myUUID', uuid);
});
}
});
$cookieStore.get()
时,无法得到预期的值? - Ye LiubeforeEach
中调用cookieService.put(...)
,那么当我在控制器内记录$cookieStore.get(...)
时,它会返回未定义,就好像它看不到我试图模拟的cookie。 - grivescorbett