与typemoq
注入上的问题类似,我如何将tsmockito对象注入angular的TestBed.configureTestingModule()
?我能找到的任何模拟测试的例子都与角度无关。
考虑以下最小的工作示例进行测试 - 它包含一个ProgressComponent
,在我们模拟的后端有一个ProgressService
。该服务非常简单:
import { Injectable } from '@angular/core';
@Injectable()
export class ProgressService {
private currentState: string = '1';
constructor() {
}
setCurrentState(state: string) {
this.currentState = state;
}
getCurrentState(){
return this.currentState
}
}
为了在没有<code>ts mockito</code>的情况下模拟它,我们只需扩展类。
import {ProgressService} from "../../../progress.service";
export class MockProgressService extends ProgressService{}
然后在测试< code>ProgressComponent时,< code>MockProgressService被传递给测试床。
import {async, ComponentFixture, getTestBed, TestBed} from '@angular/core/testing'
import { ProgressComponent } from './progress.component'
import {ProgressService} from "../progress.service"
import {MockProgressService} from "../shared/services/progress/progress.mock";
describe('ProgressComponent', () => {
let injector: TestBed
let mockService: ProgressService
let fixture: ComponentFixture<ProgressComponent>
let component: ProgressComponent
beforeEach(async() => {
TestBed.configureTestingModule({
declarations: [ ProgressComponent ],
providers: [{provide: ProgressService, useClass: MockProgressService}]
}).compileComponents()
injector = getTestBed()
fixture = TestBed.createComponent(ProgressComponent)
component = fixture.componentInstance
mockService = injector.get(ProgressService)
fixture.detectChanges();
});
});
角度测试框架通过TestBed
引入了依赖注入。我们如何在角度的测试设置中使用mockito?例如,如何使片段injector.get(ProgressService)
与ts-mockito模拟兼容?
如果提供者应该使用另一个对象而不是类来模拟,它应该使用useValue
或useFactory
。
对茉莉来说是:
providers: [{
provide: ProgressService,
useValue: jasmine.createSpyObj('ProgressService', [...])
}]
对于 ts-mockito 它可以是:
progressServiceMock = mock(ProgressService);
...
providers: [{provide: ProgressService, useValue: instance(progressServiceMock)}]
虽然从原始类中继承模拟类,如class MockProgressService扩展ProgressService
通常没有好处。如果目的是模拟一些方法,它们可以在真实的类实例或类原型上使用jasmine.spy
(或当前测试框架具有的对应物)进行模拟。当一个类不是当前单元测试的那个类时,模拟/存根所有方法而不是几个方法有利于测试隔离。
问题内容: 我是新来的。我试图针对使用JDK 1.7,Spring 3.1,Groovy 1.8.6,Spock 0.6,Maven 3.0.4的独立Java应用程序编写Spock单元测试。基本的hello world spock测试正在运行。但是,当我尝试测试弹簧豆时,我发现它们没有被注入。我使用这里提到的方法。在 when 块内 , businessObjectDao为null 。我该如何工作
我在为SpringJUnit4ClassRunner.class)配置测试时遇到了问题。我的问题是因为我的映射器从map结构到达时返回null。
我想在单元测试模块中使用我的领域管理器。我做的 然后我想实现 但是realmManager为空。如何使用匕首2编写简单的模块测试?我用了匕首模拟,但没有用。我的模块包含 我尝试了谷歌的一切,但我不知道如何从图形中注入对象。
我是JUnit和Mockito的新手,我想在我的DAO测试课中模拟我的SessionFactory,这就是我继续的方式: 这是我的刀类 但是当我运行我的测试时,我有一个< code > Java . lang . NullPointerException 异常,nullPointerException在< code > todos = session factory . getcurrentses
我有以下用例: 问题2:为什么如果我只使用构造函数而不使用@Autowired或者反之亦然,那么一切都能正常工作,因为我没有加载Spring上下文...我有单元测试...
问题内容: 我已经用npm和webpack反应了应用程序。我正在尝试向其中添加单元测试。 我正在使用index.html中包含的CDN中的jQuery,而不是使用node模块。 我在添加了单元测试用例的组件中使用jQuery 。 现在,当我执行测试用例时,我收到错误消息,说 我明白Jest无法解决它,因为我没有在Component中导入jQuery import。 问题是,如何让Jest知道外部J
我有一个jsf spring应用程序,并使用mockito进行单元测试。在模拟中运行测试时,我一直得到。对于不存在。 要嘲弄的方法 我的JUnit测试是用注释的
我使用和注释来注入一个原型bean。 然而,注入bean的行为类似于单例bean。有没有办法在mockito中注入一个原型范围bean? 我正在使用运行JUnit,并使用运行初始化模拟。