Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何设置后台状态代码?_Unit Testing_Angular - Fatal编程技术网

Unit testing 如何设置后台状态代码?

Unit testing 如何设置后台状态代码?,unit-testing,angular,Unit Testing,Angular,对于HTTP测试,我有以下提供程序 providers: [ MockBackend, BaseRequestOptions, { provide: Http, useFactory: (pBackend: MockBackend, pOptions: BaseRequestOptions) => { return new Http(pBackend, pOptions); }, deps: [Mo

对于HTTP测试,我有以下提供程序

  providers: [
    MockBackend,
    BaseRequestOptions,
    {
      provide: Http,
      useFactory: (pBackend: MockBackend, pOptions: BaseRequestOptions) => {
        return new Http(pBackend, pOptions);
      },
      deps: [MockBackend, BaseRequestOptions]
    }
  ]
我可以嘲笑成功的回应

let backend = injector.get(MockBackend);
backend.connections.subscribe(
  (connection: MockConnection) => {
    connection.mockRespond(new Response(
      new ResponseOptions({
          body: {mydata:'somedata'}
        }
      )));
  });
let backend = injector.get(MockBackend);
backend.connections.subscribe(
  (connection: MockConnection) => {
    connection.mockError(new Error('error'));
  });
和一个错误响应

let backend = injector.get(MockBackend);
backend.connections.subscribe(
  (connection: MockConnection) => {
    connection.mockRespond(new Response(
      new ResponseOptions({
          body: {mydata:'somedata'}
        }
      )));
  });
let backend = injector.get(MockBackend);
backend.connections.subscribe(
  (connection: MockConnection) => {
    connection.mockError(new Error('error'));
  });
但是,请问,我如何嘲笑非200回答。例如,我如何响应HTTP状态代码418


谢谢

只需在
响应选项中添加一个status属性

new ResponseOptions({
  body: {mydata:'somedata'},
  status: 418
})

有关其他属性的信息,请参见

,请注意-这不会触发
catch
函数,也不会触发
.subscribe
上的第二个函数,如果这是他在单元测试中尝试测试的