首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用spy模拟

无法使用spy模拟
EN

Stack Overflow用户
提问于 2019-10-10 16:45:31
回答 1查看 18关注 0票数 1
代码语言:javascript
复制
import { ValidatorsService } from 'services/ValidatorsService.ts';
import { AppConstants } from 'app.constants';
import { AlertsService } from 'services/AlertsService';
import { TestBed } from '@angular/core/testing';

fdescribe('Validators service', function() {
  let vs: ValidatorsService = null;
  let appConstantsSpy: jasmine.SpyObj<AppConstants>;
  beforeEach(() => {
    console.log('Nitish');
    const spy = jasmine.createSpyObj(
        'AppConstants', ['INVALID_NAME_CHARS']);
    TestBed.configureTestingModule({
      providers: [ValidatorsService,
      AlertsService,
      {provide: AppConstants, useValue: spy}]
    });

    vs = TestBed.get(ValidatorsService);
    appConstantsSpy = TestBed.get(AppConstants);
    appConstantsSpy.INVALID_NAME_CHARS.and.returnValue('#xyz');

  });

  describe('validators service', () => {
    it('should correctly validate entity names', () => {
      expect(vs.isValidEntityName('b')).toBe(true);
      expect(vs.isValidEntityName('b   ')).toBe(true);
      expect(vs.isValidEntityName('   b')).toBe(true);
      expect(vs.isValidEntityName('bd')).toBe(true);
      console.log(AppConstants.INVALID_NAME_CHARS);
      expect(vs.isValidEntityName('')).toBe(false);
      expect(vs.isValidEntityName('   ')).toBe(false);
      expect(vs.isValidEntityName('x')).toBe(false);
      expect(vs.isValidEntityName('y')).toBe(false);
      expect(vs.isValidEntityName('bx')).toBe(false);
    });

这里有什么问题吗?我无法模拟AppConstants中存在的INVALID_NAME_CHARS属性。它仍然指向原始值(使用测试中编写的console.log检查)

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 00:43:54

好了,我知道答案了。这有两个问题:

  1. INVALID_NAME_CHARS不是一个函数,它是一个类变量,因此它不返回任何东西。相反,我们必须做一个没有将AppConstants注入到构造函数中的appConstantsSpy.INVALID_NAME_CHARS = '#xyz'.
  2. I。只有当服务被注入到构造函数中时,{provide: AppConstants, useValue: spy}才能工作,因此间谍不是在模仿。实际上,我得到的是原始值本身。此外,控制台语句将返回原始值。我们需要做console.log(appConstantsSpy.INVALID_NAME_CHARS).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58318870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档