bixi
Version:
企业级中后台前端解决方案
105 lines (93 loc) • 2.87 kB
text/typescript
import { TestBed } from '@angular/core/testing';
import { BixiMockModule } from './mock.module';
import { IMockRequest, IMockInfo, IMockConfig, ISafeAny } from './mock.type';
import { MockService } from './mock.service';
const DATA = {
TESTS: {
'/users': () => {
return 'hello';
},
'/users/1': () => {
return { id: 1, 'rank': '★★★' }
},
'/users/:id': (req: IMockRequest) => {
return { id: req.params.id, s: 'detail' };
},
'/users/:id/edit': (req: IMockRequest) => {
return { id: req.params.id, s: 'edit' };
},
'/user': {
get: () => {
return 'user';
},
post: () => {
return 'post user';
}
}
}
};
describe('mock: service', () => {
let mockService: MockService;
function genModule(options: IMockConfig) {
TestBed.configureTestingModule({
imports: [BixiMockModule.forRoot(options)]
});
mockService = TestBed.inject<MockService>(MockService);
}
describe('# base usaging', () => {
beforeEach(() =>
genModule({ data: DATA }),
);
afterEach(() => mockService.ngOnDestroy());
it('should be default', () => {
const collect = mockService.getCollect('', '/users') as IMockInfo;
expect(collect.url).toBe('/users');
expect(collect.method).toBe('GET');
});
it('should be Post', () => {
const collect = mockService.getCollect('POST', '/user') as IMockInfo;
expect(collect.url).toBe('/user');
expect(collect.method).toBe('POST');
});
it('should be invalid url', () => {
expect(mockService.getCollect('GET', '/org/users/2')).toBeNull();
});
it('should mock collect priority', () => {
const editRule = mockService.getCollect('GET', '/users/1/edit') as IMockInfo;
const editRes = editRule.value.value(editRule as ISafeAny);
expect(editRes.s).toBe('edit');
const detailRule = mockService.getCollect('GET', '/users/1') as IMockInfo;
expect((detailRule.value.value as ISafeAny)().rank).not.toBeUndefined();
});
});
describe('# apply', () => {
it('should allow empty data', () => {
genModule({
data: null,
});
expect(mockService.collects.length).toBe(0);
});
it('should be default GET method', () => {
genModule({
data: {
USERS: {
'/userss': {
do: () => {
return 'invalid method'
}
},
},
},
});
const collect = mockService.getCollect('', '/userss') as IMockInfo;
expect(collect.url).toBe('/userss');
expect(collect.method).toBe('GET');
});
});
it('# clearCollect', () => {
genModule({ data: DATA });
mockService.clearCollect();
const collect = mockService.getCollect('POST', '/users/1');
expect(collect).toBeNull();
});
});