亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

HttpTestingController通過HttpParams測試正確的

HttpTestingController通過HttpParams測試正確的

catspeake 2021-04-27 09:56:48
我正在尋找使用HttpTestingController來測試我的服務通過HttpClient發送的POST請求中是否包含正確的字段集。網絡表格export class WebFormService {constructor(private httpClient: HttpClient) { }public submitForm(fields): Observable<any> {  const headers = new HttpHeaders()      .set('Content-Type', 'application/x-www-form-urlencoded');  const body = new HttpParams()    .set('_to',  environment.FORM_RECIPIENT)    .set('source', 'mysite');  for (let key of fields) {      body.set(key, fields[key]);  }  return this.httpClient.post(    environment.FORM_URL,    body,    {headers}  );}web-form.spec.tsit('sends a POST request via the HttpClient service', () => {    const testFields = {      name: 'test contributor',      message: 'my message',      email: '[email protected]'    };    webFormService.submitForm(testFields).subscribe();    const req = httpTestingController.expectOne(environment.FORM_URL);    expect(req.request.method).toEqual('POST');    expect(req.request.headers.get('Content-Type')).toEqual('application/x-www-form-urlencoded');    // Here I'd like to make assertions about the fields that data being posted.    req.flush('');});HttpRequest是url編碼的body,所以req.request.body是正確的url編碼的字符串。有什么好的選擇可以進行測試而無需對請求主體進行解碼和比較對象?
查看完整描述

1 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

實際上,該HttpParams對象仍然可以通過HttpRequestbody屬性使用。


這有點令人困惑且難以發現,因為HttpParams.toString()函數執行urlencoding,這反過來又導致測試運行程序發出已編碼的字符串。


因此,仍然可以利用HttpParams函數來獲取被測服務提供給的鍵和值HttpClient。


例如...


const req = httpTestingController.expectOne(environment.CONTRIBUTION_FORM_ENDPOINT);

expect(req.request.method).toEqual('POST');

expect(req.request.headers.get('Content-Type')).toEqual('application/x-www-form-urlencoded');


const expectedFormKeys = Object.keys(testFields).concat(['_to', 'source']);

expect(req.request.body.keys().sort()).toEqual(expectedFormKeys.sort());

// ... and so on


查看完整回答
反對 回復 2021-05-06
  • 1 回答
  • 0 關注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號