使用jasmine.SpyObj-Angular / Jasmine测试服务属性上的可观察对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jasmine.SpyObj-Angular / Jasmine测试服务属性上的可观察对象相关的知识,希望对你有一定的参考价值。

我正在尝试测试绑定到内联属性而不是服务上方法的可观察对象,但是我似乎找不到任何有关如何在SpyObj本身或通过SpyObj返回正确值的示例。 spyOn / SpyOnProperty调用。

// ContentService 
readonly content$ = this.http.get('www.testContent.com');

// ParentService
constructor(private readonly contentService: ContentService)
  this.loadContent();


// This could return different content dependent on locale for example
loadContent()
  this.contentService.content$.subscribe((response)=>
    // Handle response
  )


// Unit test 
let service: ParentService;
let contentServiceSpy: jasmine.SpyObj<ContentService>;

beforeEach(() => 
  const spy = jasmine.createSpyObj('ContentService', [], 
    // Returns cannot read subscribe of undefined
    content$: of()
  );

  TestBed.configureTestingModule(
    providers: [
      ParentService,
       provide: ContentService, useValue: spy 
    ]
  );

  service = TestBed.get(ParentService);
  contentServiceSpy = TestBed.get(ContentService) as jasmine.SpyObj<ContentService>;
);

我已经看到了一些关于将spyOnProperty与get和set方法一起使用的示例,但这不是这里发生的事情,我是在jasmine.SpyObj上错误地声明了它,还是有一种我缺少的特殊jasmine方法来返回content$中的期望值

我正在尝试测试绑定到内联属性而不是服务上方法的可观察对象,但是我似乎也找不到关于如何返回正确值的任何示例...

答案

在这些情况下,我要向createSpyObj本身添加一个实例属性。

以上是关于使用jasmine.SpyObj-Angular / Jasmine测试服务属性上的可观察对象的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份