我正在尝试为随机生成网址创建单元测试。
我的项目控制器JS
init()
function init(){
var results = itemService.request();
other codes..
}
我的itemService js
function request(){
other codes..
return $http.get(url);
}
function generateUrl() {
var url = 'https://project/'
var num = Math.floor((Math.random() * 100) + 1);
url += num;
other codes to generate more attribute for url…
return url
}
单元测试:
beforeEach(function () {
module(‘itemApp’);
inject(function ($injector) {
$controller = $injector.get('$controller');
itemService = $injector.get(‘itemService’);
$rootScope = $injector.get('$rootScope');
$scope = $rootScope.$new();
$httpBackend = $injector.get('$httpBackend');
});
vm.$controller(‘itemCtrl’, {
‘$scope’:$scope
})
$httpBackend.when('GET', 'https://project/15/other-attributes').respond(200);
});
describe('initialization', function() {
it(‘start init’ , function(){
//not sure what to do.
});
该应用程序有效,但我正在
Error: Unexpected request: GET https://project/12/other-attributes
当我运行单元测试时,因为我的网址中会有随机数字。
我不确定如何模拟网址,因为它会随机生成。任何人都可以帮我吗?非常感谢!
答案 0 :(得分:0)
你有没有试过这样的东西,
$httpBackend.when('GET', /https:\/\/project\/[0-9]+\/other-attributes/).respond(200);
$ httpBackend.when()方法支持正则表达式。
如果是动态环境变量,
var environmentUrl = "http://google.com";
$httpBackend.when('GET', new RegExp(environmentUrl + '/[0-9]+/other-attributes')).respond(200);