如何对依赖服务的组件的方法进行单元测试?

h4sop

我有以下方法,我需要在使用Jasmine和Karma时进行测试。据我所知,是subscribe不会执行的。在测试过程中的变量addedToDB,并existingInDB没有更新,我的测试要断言他们是假的。

addBank(name: string, country: string, pageurl: string, fromcurrency: string,
          tocurrencyxpath: string, buyxpath: string, sellxpath: string, unit: string) {
    this.service.postBank(name, country, pageurl, fromcurrency, tocurrencyxpath, buyxpath, sellxpath, unit).subscribe(
      data => {
        console.log('POST executed', data);
        if (name === '' || country === '' || pageurl === '' || fromcurrency === ''
          || tocurrencyxpath === '' || buyxpath === '' || sellxpath === ''
          || unit === '') {
          this.openSnackBar('Please fill all the areas', '');
          this.addedToDB = false;
          this.existingInDB = false;
        } else ...

现在的测试:

it('should reject the bank - unsufficient info', async () => {
const add = new AddBanksComponent(service, snackbar);
add.addBank('Danske Bank', 'DK',
  'http://danskebank.dk', 'DKK',
  'abcdefghijklm', 'abcdefghijklm',
  'abcdefghijklm', '');
console.log('mock ' + add.addedToDB);
console.log('mock ' + add.existingInDB);
await fixture.whenStable();
fixture.detectChanges();
expect(add.addedToDB).toEqual(false);
expect(add.existingInDB).toEqual(false);
布赖恩斯

该服务是一个外部类,可以/应该完全模拟。

const data = // whatever you want the subscribe to pass through

// Create an object that will mock the subscribe
const obsMock = jamsine.createSpyObj('obsMock', ['subscribe'];

// Subscribe is a function that takes a callback. We have to mock that here
obsMock.subscribe.and.callFake((callback) => {
  callback(data);
});

// Create a service spy
const service = jasmine.createSpyObj('service', ['postBank']);

// Have the service.postBank method call return our mocked observable
service.postBank.and.returnValue(obsMock)

// Pass in the mocked service
const add = new AddBanksComponent(service, snackbar);

add.addBank('Danske Bank', 'DK',
   'http://danskebank.dk', 'DKK',
   'abcdefghijklm', 'abcdefghijklm',
   'abcdefghijklm', '');

...verify here

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对自定义Wicket组件进行单元测试

如何使用http作为依赖项进行单元测试

如何使用Jest对Vue.js组件中的方法进行单元测试

如何对依赖于ActivatedRoute参数的组件进行单元测试?

如何对React-Redux连接的组件进行单元测试?

如何对反应组件的方法进行单元测试?

如何对依赖于springBoot applicationContext的单元测试方法进行单元测试?

如何对$ mdSidenav服务进行单元测试?

如何对空方法进行单元测试

如何对将方法调用到父组件的组件中的功能进行单元测试

对组件进行单元测试的正确方法

如何对依赖于元素高度的组件进行单元测试(角度为5)?

我应该如何对该React组件进行单元测试?

如何对以TemplateRef为输入的角组件进行单元测试?

Angular,对通过接口创建服务的组件进行单元测试

如何对依赖TaskCompletionSource的类进行单元测试?

如何对依赖的cpde进行单元测试

模拟服务中的方法进行单元测试

在EmberJS中对组件进行单元测试的正确方法

如何对POST方法进行单元测试

如何对一个依赖于其注册回调的Angular服务进行单元测试?

如何使用HttpWebRequest / Response依赖项对方法进行单元测试

进行WCF服务呼叫的单元测试方法?

如何使用在方法中具有依赖项的moq来对类进行单元测试?

如何正确使用大量依赖项进行单元测试

对我进行依赖注入的方法进行单元测试

如何对依赖的 if 语句进行单元测试?

如何对依赖于 redux props 的组件进行单元测试

如何对依赖于实例属性的实例方法进行单元测试?