首页 > 解决方案 > Angular,如何在服务变量上创建间谍对象

问题描述

我想测试使用服务的组件。我不想使用 npm 库或创建模拟文件。我想使用间谍对象。

假设服务如下所示:

@Injectable({
    providedIn: root
} 
export class MyService {
  isReady: Subject<boolean>;
  // etc more code
} 

在我的 spec.ts 文件中:

// Includes

describe('myComponent', () => {
// Some boilerplate code
let mockMyService;

beforeEach(() => {

    mockMyService = jasmine.createSpyObj('MyService', ['isReady']);
});

TestBed.configureTestingModule({
  declarations: [
   // Some declarations. 
],
providers: [
   { provide: MyService, useValue: mockMyService} 
}]);

beforeEach(() => {
   mockMyService.isReady.and.returnValue(of({}));
});

如您所见,我想模拟服务的变量(主题)。但是我上面的代码不起作用。

怎么做?提前致谢。

标签: angulartestingrxjskarma-jasminespy

解决方案


推荐阅读