vue crossbar karma unit

51 阅读1分钟

注意 done setTimeout timeout(10000) 的使用

vue : 2.5.2

webpack : 3.6.0

karma : 1.4.1

autobahn : 17.5.2

// hello.vue 

<script>
import autobahn from 'autobahn'
export default {
  name: 'Hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      connction: null,
      autobahnSession: null
    }
  },
  mounted () {
    this.connection = new autobahn.Connection({
      url: 'ws://crossbar.ss-gg.com:28080/ws',
      realm: 'realm1'
    })
    this.connection.onopen = (session, details) => {
      this.autobahnSession = session
      console.log('connection success')

      function getData () {
        return '123'
      }
      this.autobahnSession.register('com.ss-gg.test.getData', getData, {
        invoke: 'roundrobin'
      }).then(
        function (req) {
          console.log('updateData register')
        },
        function (err) {
          console.log('updateData error')
          console.log(err)
        }
      )
      //
    }
    this.connection.onclose = (reason, details) => {
      console.log('connection close ')
    }
    this.connection.open()
    this.autobahnSession = this.connection.session
  },
  methods: {
    click () {
      this.autobahnSession.call('com.ss-gg.fileserver.get_upload_token', [])
        .then(
          function (res) {
            console.log('res')
            console.log(res)
          },
          function (err) {
            console.log('err')
            console.log(err)
          }
        )
    },
    closeConn () {
      this.connection.close()
      console.log('close')
    }
  }
}
</script>
// Hello.spect.js  

import Vue from 'vue'
import Hello from '@/components/Hello'

describe('Hello.vue', () => {
  it('should render correct contents', () => {
    const Constructor = Vue.extend(Hello)
    const vm = new Constructor().$mount()
    expect(vm.$el.querySelector('.hello h1').textContent)
      .to.equal('Welcome to Your Vue.js App')
  })

  it('connection', (done) => {
    const Constructor = Vue.extend(Hello)
    const vm = new Constructor().$mount()

    vm.connection.close()
    vm.connection.open()

    setTimeout(() => {
      vm.autobahnSession.call('com.ss-gg.test.getData', [])
          .then(
            function (res) {
              console.log('res')
              console.log(res)
            },
            function (err) {
              console.log('err')
              console.log(err)
            }
          )
      done()
    }, 1000)
  })

  it('test call', (done) => {
    const Constructor = Vue.extend(Hello)
    const vm = new Constructor().$mount()

    vm.connection.close()
    vm.connection.open()
    setTimeout(() => {
      vm.click()
    }, 1000)
    setTimeout(() => {
      done()
    }, 2000)
  }).timeout(10000)
  //
  it('autobahn connection close', () => {
    const Constructor = Vue.extend(Hello)
    const vm = new Constructor().$mount()
    // vm.connection.open()
    vm.connection.close()
  })
})