0

AppDB依存関係がありcreateStudy、モックする必要があるこのクラスを単体テストしようとしています。始めるためstartLoadingDataに、たまたまMobXである単純なメソッドの単体テストを試みていますaction

import { observable, action } from 'mobx'
import { Intent } from '@blueprintjs/core'
import { createStudy } from '../database/DatabaseInit'
import { AppDB } from '../database/Database'


export default class UIStore {
  // ui state
  // booleans indicating open/close state of modals
  @observable createDialogue
  @observable importDialogue
  @observable revisionsDialogue
  @observable runDialogue
  // boolean indicating loading or waiting for async action
  @observable loadingData
  // array indicating navigation
  @observable breadcrumbs
  @observable processingMessages

  constructor(rootStore) {
    this.rootStore = rootStore
    this.breadcrumbs = []
    this.importDialogue = false
    this.createDialogue = false
    this.revisionsDialogue = false
    this.runDialogue = false
    // boolean to display loading blur on table that displays data
    this.loadingData = false
    // processing messages for import and other async loads
    this.processingMessages = []
  }
  @action startLoadingData() {
    this.loadingData = true
  }
}

以下の私のテストファイルはどこにも行きsqlite3ませAppDBcreateStudy. 私の理解では、これらの 2 つの依存関係をモックすると、エラーを回避できます。それらはモックされ、使用しようとする実際の実装ではないためsqlite3です。

// UIStore domain store unit test
// import * as Database from '../../app/database/Database'
// import * as DatabaseInit from '../../app/database/DatabaseInit'
import UIStore from '../../app/stores/UIStore'


describe('UIStore', () => {
  beforeEach(() => {
    // jest.spyOn(Database, 'AppDB').andReturn('mockAppDB')
    // jest.spyOn(DatabaseInit, 'createStudy').andReturn('createStudy')
    jest.mock('../../app/database/Database')
    // jest.mock('DatabaseInit')
  })
  it('starts loading data', () => {
    const testUIStore = new UIStore(this)
    testUIStore.startLoadingData()
    expect(testUIStore.loadingData).toBe(true)
  })
})

ご覧のとおり、さまざまなことを試していますが、どこにも到達していないようです。手動モックについて読んだことがありますが、そうかもしれないと思ったので、手動モックを作成しましたが、Databaseそれが正しく行われているかどうかさえわかりません。

const Database = jest.genMockFromModule('../Database.js')

module.exports = Database

AppDBこれは問題ではないと思いますが、これは ES6 クラスでcreateStudyあり、メソッドであることは注目に値するかもしれません。

4

1 に答える 1