Question

question

Quelles options dois-je écrire des spécifications pour le code qui implique d'interagir avec une boîte de dialogue de confirmation de l'éditeur Atom?

Fond

Je travaille sur un package pour Atom et j'ai une commande pour supprimer un fichier qui appuie ensuite les modifications apportées au serveur. J'aimerais écrire un test pour valider le comportement de la commande, mais j'ai du mal à trouver un bon moyen de simuler le bouton Annuler / ok de la boîte de dialogue de confirmation

Le code de commande ressemble à ceci

atom.workspaceView.command "mavensmate:delete-file-from-server", =>
  # do setup stuff (build the params object)
  atom.confirm
    message: "You sure?"
    buttons:
      Cancel: => # nothing to do here, just let the window close
      Delete: => # run the delete handler
        @mm.run(params).then (result) =>
          @mmResponseHandler(params, result)

Ce que je ne peux pas sembler comprendre, c'est comment obtenir l'annulation ou la suppression de rappels à exécuter dans une spécification. J'ai traversé toutes les spécifications de l'Atome et je découvre Google, mais rien ne semble venir. J'espérais que définir le retour à l'index du rappel que je veux tirer travaillerait, mais mon rappel de bouton de suppression ne s'appelle jamais.

# Delete the metadata in the active pane from the server
describe 'Delete File from Server', ->
  filePath = ''

  beforeEach ->
    # set up the workspace with a fake apex class
    directory = temp.mkdirSync()
    atom.project.setPath(directory)
    filePath = path.join(directory, 'MyClass.cls')
    spyOn(mm, 'run').andCallThrough()

    waitsForPromise ->
      atom.workspace.open(filePath)

  it 'should invoke mavensmate:delete-file-from-server if confirmed', ->
    spyOn(atom, 'confirm').andReturn(1)
    atom.workspaceView.trigger 'mavensmate:delete-file-from-server'
    expect(mm.run).toHaveBeenCalled()

Y a-t-il un meilleur moyen d'imiter l'utilisateur en cliquant sur un bouton de la boîte de dialogue de confirmation? Y a-t-il des solutions de contournement pour obtenir ce test?

Était-ce utile?

La solution

Il n'apparaît pas être un bon moyen de simuler l'interaction avec une boîte de dialogue de confirmation si vous passez dans des rappels avec vos boutons, mais si vous passez simplement un tableau et que vous avez le déclencheur de commande répondit à cela, puispeut écrire un spec comme souhaité.

Le code de commande ressemblerait alors à ceci

atom.workspaceView.command "mavensmate:delete-file-from-server", =>
  # do setup stuff (build the params object)
  atom.confirm
    message: "You sure?"
    buttons: ["Cancel", "Delete"]
  if answer == 1
    @mm.run(params).then (result) =>
      @mmResponseHandler(params, result)

et la spécification fonctionnerait dans sa version actuelle

# Delete the metadata in the active pane from the server
describe 'Delete File from Server', ->
  filePath = ''

  beforeEach ->
    # set up the workspace with a fake apex class
    directory = temp.mkdirSync()
    atom.project.setPath(directory)
    filePath = path.join(directory, 'MyClass.cls')
    spyOn(mm, 'run').andCallThrough()

    waitsForPromise ->
      atom.workspace.open(filePath)

  it 'should invoke mavensmate:delete-file-from-server if confirmed', ->
    spyOn(atom, 'confirm').andReturn(1)
    atom.workspaceView.trigger 'mavensmate:delete-file-from-server'
    expect(mm.run).toHaveBeenCalled()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top