мы проводим пакт-тесты, потому что вы должны издеваться над множеством вещей, которые не кажутся нам реальными.
Пример
import {PactWeb} from '@pact-foundation/pact-web';
describe('FooService', () => {
let provider: PactWeb;
beforeAll(async () => {
await provider.addInteraction({
state: 'I have an foo',
uponReceiving: 'a request to create an bar',
withRequest: {
method: 'POST',
path: '/url/bars',
body: {
foo: '123456',
bar: 'abcd'
}
},
willRespondWith: {
status: 200,
headers: {'Content-Type': 'application/json'},
body: {
foo: '123456',
bar: 'abcd'
}
}
});
});
it('should create one bar and respond with that bar', async () => {
const service: FooService = TestBed.get(FooService);
(service as any).apiBasePath = provider.mockService.baseUrl + 'url';
const result = await service.createBar({
foo: '123456',
bar: 'abcd'
}).toPromise();
expect(result.id).toEqual('some-random-uuid');
});
afterAll(function (done) {
provider.finalize()
.then(function () {
done();
}, function (err) {
done.fail(err);
});
});
});
Я полагаю, что выу вас есть служба с именем «createBar», которую вы хотите протестировать.
State Просто для того, чтобы знать, что вы делаете, поэтому это состояние провайдера.У него есть фу.И после получения запроса он должен создать бар
withRequest Показывает, как должен выглядеть запрос
willRespondWith Показывает ответ.