我写了一个javascript方法,可以在单击图像时更改建议框的值。
function startDestinationF(a) {
var startDestination = document.getElementById('startDestination');
startDestination.selectedIndex = (a);}
现在我必须编写一个茉莉花测试用例来检查这种方法是否真的有效,但我真的不明白。
我试过:
describe("Change onclick the value of the drop down menu", function() {
var startDestination;
beforeEach(function() {
startDestination = document.getElementById('startDestination');
});
it("should change the value", function() {
expect(startDestinationF(3)).toBe(startDestination.selectedIndex==3);
});});
但它说:"无法读取 null 的属性'selectedIndex'"。我是该领域的新手,我真的需要一些帮助......
谢谢
DOM 中必须有 id startDestination 的元素。
实现此目的的两种方法:
- 将元素硬编码到 SpecRunner 的主体元素中.html
- 使用 JavaScript 创建元素并将其附加到 DOM,然后再运行该测试。
老问题,但以防有人会找到它
it("should work", myTestFunction.bind(this, 'param1','param4'));
it("should work", myTestFunction.bind(this, 'param2','param3'));
function myTestFunction(param1, expected){
expect(param1).toBe(expected);
}
我使用 bind 使用必要的参数复制我的函数
与Jasmine一样,您需要在DOM中创建具有ID的元素至关重要。有很多方法可以做到这一点,我的做法是使用茉莉花固定装置
affix('#startDestination') --> This will create this in DOM <div id="startDestination">
如果您需要特定类型的输入,您也可以这样做。
这是你可以做到的一种方式,这通常是我这样做的方式。我冒昧地使用jQuery来做这个:)
这是一个工作 plunkr: http://plnkr.co/edit/93dyzvxa82sFWWFZ6NTi?p=preview
describe('test suite', function(){
// this here represents your global function
// I've added this here for the purpose of this demo
function setValue(a) {
$('#name').val(a);
}
beforeEach(function(){
this.element = $('<input id="name" type="text" />');
this.element.appendTo('body');
});
// clean up
afterEach(function(){
this.element.remove();
});
it('should change the value', function(){
//when
setValue('Alex Baur');
// then
expect(this.element.val()).to.Equal('Alex Baur');
});
});