Pergunta

Pergunta

Que opções eu tenho para escrever especificações para o código que envolve interagir com um átomo editor de diálogo de confirmação?

Fundo

Eu estou trabalhando em um pacote para o átomo, e tem um comando para excluir um arquivo que, em seguida, envia as alterações para o servidor.Eu gostaria de escrever um teste para validar o comportamento do comando, mas estou tendo dificuldades para encontrar uma boa maneira de simular clicando em 'cancelar' /ok botão na caixa de diálogo de confirmação

O código de comando parecido com este

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)

O que eu não consigo descobrir como ganhar cancelar ou excluir retornos de chamada para executar em uma especificação.Eu estive cavando através de todas as átomo especificações e vasculhando o google, mas nada parece vir ao de cima.Eu esperava que a configuração da retornar para o índice de retorno de chamada que eu quero para o fogo iria trabalhar, mas a minha excluir botão de chamada de retorno é nunca ser chamado.

# 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()

Não há melhor maneira de imitar o usuário clique em um botão na caixa de diálogo de confirmação?Existem soluções alternativas para obter este teste?

Foi útil?

Solução

Não parece ser uma boa maneira de simular a interação com um diálogo de confirmação, se você estiver passando em retornos de chamada com seus botões, mas se você acabou de passar uma matriz, e tem o comando de gatilho para responder a esse, em seguida, você pode escrever uma especificação desejada.

O código de comando a seguir como este

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)

E a especificação iria trabalhar em sua versão atual

# 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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top