js-unit
Version:
A javascript unit testing tool inspired by the famous PHPUnit framework. This tool uses jasmine internally to run the tests
71 lines (48 loc) • 1.62 kB
JavaScript
import TestCase from "./TestCase.js";
import Vue from "vue";
global.Vue = Vue;
class VueTestCase extends TestCase {
mount(VueComponent, props = {}) {
let Constructor = Vue.extend(VueComponent);
this.mounted = new Constructor({ propsData: props }).$mount();
return this.mounted;
}
assertNumberOfElements(selector, expected) {
let actual = this.findAll(selector);
this.assertCount(expected, actual, `Expected ${expected} [${selector}] elements, but found ${actual.length}`);
}
assertElementContains(selector, needle) {
let element = this.find(selector);
this.assertContains(needle, element.innerHTML);
}
assertElementNotContains(selector, needle) {
let element = this.find(selector);
this.assertNotContains(needle, element.innerHTML);
}
assertElementExists(selector) {
this.find(selector);
}
assertElementNotExists(selector) {
this.assertNumberOfElements(selector, 0);
}
click(selector) {
var event = document.createEvent("HTMLEvents");
event.initEvent('click', true, true);
let element = this.find(selector);
element.dispatchEvent(event);
}
findAll(selector) {
return this.mounted.$el.querySelectorAll(selector);
}
find(selector) {
let element = this.mounted.$el.querySelector(selector);
if (!element) {
fail(`Element [${selector}] was not found`);
}
return element;
}
nextTick() {
this.SUT.$nextTick();
}
}
export default VueTestCase;