首页 > 解决方案 > 使用“jasmine-marbles”测试我的服务时出现“应该正确返回”错误

问题描述

我收到一个错误:

 TypeError: actual.subscribe is not a function

      19 |     it('should correctly return', () => {
      20 |         const expectedValues = cold('--a', {a:[]});
    > 21 |         expect(sut.getAvailabilityType).toBeObservable(expectedValues);
         |                                         ^
      22 |     })
      23 | })

但无法理解问题。这是我的服务片段:

@Injectable({
    providedIn: 'root'
})
export class CandidateRegistrationManagementService {

    constructor(private http: HttpClient) { }

    getAvailabilityType(): Observable<ModelAvailabilityType> {
        return this.http.get<ModelAvailabilityType>(environment.setUpAndConfigUrl + `LookupTypeValue/LookupValueTypeDetails?LookupTypeName=AvailabilityType`)
            .pipe(
                map(events => {
                    return events;
                }),
                catchError(this.handleError)
            );
    }

})

这是我对上述服务的测试(获取):

import { cold, hot } from 'jasmine-marbles';
import { CandidateRegistrationManagementService } from './candidate-registration-management.service';


describe('new service', () => {
    let sut:CandidateRegistrationManagementService;
    let mockService:any;

    beforeEach(() => {
        mockService = jasmine.createSpy('getAvailabilityType');
        mockService.getAvailabilityType = hot('^-a', {a:[]});
        sut = new CandidateRegistrationManagementService(mockService);
    });

    it('should be created', () => {
        expect(sut).toBeTruthy();
    })

    it('should correctly return', () => {
        const expectedValues = cold('--a', {a:[]});
        expect(sut.getAvailabilityType).toBeObservable(expectedValues);
    })
})

我无法理解这个问题。有什么帮助我吗?我按照这里的教程

标签: angularrxjsjasmine-marbles

解决方案


推荐阅读