如何检查 angular 中对象的 属性?
how to check the property of object in angular?
我正在尝试在调用 $http 请求后更新对象的 属性。我还使用 karma 测试该值 jasmine.But 我的测试失败了,为什么?
我的对象 属性 的初始值为
**$scope.name='apple';**
成功后我替换了那个值
data.getData().then(function(data){
console.log(data);
$scope.name=data.data.name;
})
我测试了这个但是我的测试用例失败了为什么这是我的代码
http://plnkr.co/edit/ING6xCdNh8oqfurHWLAl?p=preview
afterEach(function () {
$httpBackend.verifyNoOutstandingRequest();
$httpBackend.verifyNoOutstandingExpectation();
});
it('gets a name from data.json and check', function () {
$httpBackend.whenGET('data.json').respond({ id: 123 });
data.getData('data.json').then(function(response) {
user = response;
})
$httpBackend.flush();
expect($scope.name).toEqual('test');
});
我已经编辑了你的 plunker
http://plnkr.co/edit/uwWG8wUmo7VNCDNfV4E9?p=preview
几乎没有遗漏什么,首先我将预期的 http 调用移到了 beforeEach,否则所有测试都会因意外的 http 请求而失败,因为每次创建控制器时都会发生请求
在下面的测试代码中,您 return 调用 data.json
一个对象 {id: 123}
$httpBackend.whenGET('data.json').respond({
id: 123
});
但在控制器中,您将响应的名称 - {id: 123}
分配给 $scope.name
data.getData().then(function (data) {
console.log(data);
$scope.name = data.data.name;
})
然后测试显然失败说未定义不等于 test
所以你在测试响应中需要的是:
$httpBackend.whenGET('data.json').respond({
id: 123,
name: 'test'
});
你必须记住 $scope.$digest()
和 $httpBackend.flush()
的那种操作
我正在尝试在调用 $http 请求后更新对象的 属性。我还使用 karma 测试该值 jasmine.But 我的测试失败了,为什么?
我的对象 属性 的初始值为
**$scope.name='apple';**
成功后我替换了那个值
data.getData().then(function(data){
console.log(data);
$scope.name=data.data.name;
})
我测试了这个但是我的测试用例失败了为什么这是我的代码
http://plnkr.co/edit/ING6xCdNh8oqfurHWLAl?p=preview
afterEach(function () {
$httpBackend.verifyNoOutstandingRequest();
$httpBackend.verifyNoOutstandingExpectation();
});
it('gets a name from data.json and check', function () {
$httpBackend.whenGET('data.json').respond({ id: 123 });
data.getData('data.json').then(function(response) {
user = response;
})
$httpBackend.flush();
expect($scope.name).toEqual('test');
});
我已经编辑了你的 plunker http://plnkr.co/edit/uwWG8wUmo7VNCDNfV4E9?p=preview
几乎没有遗漏什么,首先我将预期的 http 调用移到了 beforeEach,否则所有测试都会因意外的 http 请求而失败,因为每次创建控制器时都会发生请求
在下面的测试代码中,您 return 调用 data.json
一个对象 {id: 123}
$httpBackend.whenGET('data.json').respond({
id: 123
});
但在控制器中,您将响应的名称 - {id: 123}
分配给 $scope.name
data.getData().then(function (data) {
console.log(data);
$scope.name = data.data.name;
})
然后测试显然失败说未定义不等于 test
所以你在测试响应中需要的是:
$httpBackend.whenGET('data.json').respond({
id: 123,
name: 'test'
});
你必须记住 $scope.$digest()
和 $httpBackend.flush()