我遇到了茉莉和角的问题。我必须测试我的工厂。 我在plunker上制作了简化的项目。 这是演示应用程序: http://plnkr.co/edit/Agq4xz9NmYeEDWoJguxt 这是演示测试: http://plnkr.co/edit/ALVKdXO00IEDaKIjMY6u 第一个问题是如何在没有任何规范测试的情况下使规范转换器工作。
当你运行demo test plunker时,你会看到错误:
TypeError:http://run.plnkr.co/Kqz4tGMsdrxoFNKO/app.js(第39行)中未定义myDataRaw
有人可以帮忙吗?
由于
答案 0 :(得分:2)
问题是
在您的生产代码中
var dataLoadedPromise = $http.get('myData.xml', {transformResponse: transformResponse});
你希望从服务器返回的是XML
数据而不是json,所以当你模拟HTTP时,你应该使用XML而不是Json。
以下是工作代码:
describe("controller: MyController", function () {
beforeEach(function () {
module("myApp");
});
var dataFactory;
beforeEach(inject(function ($injector, $controller, $rootScope, $location, $httpBackend) {
this.$location = $location;
this.$httpBackend = $httpBackend;
this.scope = $rootScope.$new();
dataFactory = $injector.get('dataFactory');
this.$httpBackend.expectGET('myData.xml').respond(
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?><myData><persons><person><firstName>Pera</firstName><lastName>Peric</lastName><email>perica@gmail.com</email><score>22</score></person></persons></myData>");
$controller('MyController', {
$scope: this.scope,
$location: $location,
myData: dataFactory
});
}));
afterEach(function () {
this.$httpBackend.verifyNoOutstandingRequest();
this.$httpBackend.verifyNoOutstandingExpectation();
});
describe("successfully parsed persons", function () {
it("should have 2 persons", function () {
dataFactory.getData();
this.$httpBackend.flush();
});
});
});
的 Updated Demo 强>