gpt4 book ai didi

angular - 模拟 Angular 服务类属性或变量

转载 作者:行者123 更新时间:2023-12-04 12:17:50 24 4
gpt4 key购买 nike

我正在对一个 Angular 应用程序进行单元测试,我需要模拟一个服务。我可以毫无问题地模拟服务方法,但是当我尝试以相同的方式模拟属性时,它给了我错误

我的配置服务有一个属性和一种方法,我想模​​拟该属性,因为我无法生成该值。

服务

@Injectable()
export class ConfigService {
public config = 'iamdirect';

constructor(private http: Http) {
}

public load(): Observable<any> {
return 'Iamokey';
}
}

在 Angular Testing 中模拟服务
// mocking config service
configService = TestBed.get(ConfigService);
spyOn(configService, 'load')
.and.returnValue(Observable.of({
contactDetails: {
emailAddress: 'testemail@email.com'
}
}));

当我这样做时,它给了我错误。
spyOn(configService, 'config') //config is the property
.and.returnValue(Observable.of({
contactDetails: {
emailAddress: 'testemail@email.com'
}
}));

最佳答案

您可以使用 jasmine 创建 spy 对象,也可以使用模拟对象作为服务 stub 。

let mockConfigService;
let configService: ConfigService;
const subject = new Subject();

beforeEach(() => {

mockConfigService = {
config: 'test text',
load: () => subject.asObservable()
}

TestBed.configureTestingModule({
providers: [
{provide: ConfigService, useValue: mockConfigService},
]
});

configService = TestBed.get(ConfigService);
});

关于angular - 模拟 Angular 服务类属性或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46549869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com