我有一个看起来像这样的工厂方法:
createApp: function(appType, subjectType, appIndicator) {
if (appType === 'newApp') {
return Restangular.all('v1/app').post({appType: appType, appIndicator: appIndicator}).then(function(app) {
$state.go('app.initiate.new', {appId: app.id});
});
} else {
return Restangular.all('v1/app').post({appType: appType, subjectType: subjectType, appIndicator: appIndicator}).then(function(app) {
$state.go('app.initiate.old', {appId: app.id});
});
}
}
我想为它编写单元测试...但我不确定在哪里可以开始测试它。我只是真的为工厂方法编写了单元测试,这些方法比这简单得多(比如简单的数学函数)
我使用karma + jasmine进行测试,到目前为止,我写了一些失败的东西。
it('should return a new application', function(done) {
application.createApp().then(function(app) {
expect(app.appType).toEqual("newApp");
done();
});
});
关于如何测试这样的东西的任何提示?
答案 0 :(得分:0)
What you have done is wrong. You will have to mock the factory call.
spyOn(application,'createApp').and.callFake(function() {
return {
then : function(success) {
success({id: "abc"});
}
}
});
it('should return a new application', function(done) {
spyOn($state, 'go');
application.createApp();
expect($state.go).toHaveBeenCalled();
});