我写了一个javascript方法,可以在单击图像时更改建议框的值。
function startDestinationF(a) {
var startDestination = document.getElementById('startDestination');
startDestination.selectedIndex = (a);}
现在我必须编写一个jasmine测试用例来检查这个方法是否真的有效,但我真的没有。
我试过了:
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);
});});
但它说:“无法读取属性'selectedIndex'的null”。我是那个领域的新手,我真的需要一些帮助...
感谢
答案 0 :(得分:1)
你的DOM中必须有id为startDestination的元素。
实现这一目标的两种方法:
答案 1 :(得分:1)
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来使用必要的参数复制我的函数
答案 2 :(得分:0)
与Jasmine一样,您需要在DOM中创建带ID的元素。有很多方法可以做到这一点,我的方法是使用jasmine-fixture
affix('#startDestination') --> This will create this in DOM <div id="startDestination">
如果您需要具有特定类型的输入,也可以这样做。
答案 3 :(得分:0)
这是你可以做到的一种方式,这通常是我这样做的方式。 我冒昧地使用jQuery:)
这是一个有效的傻瓜: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');
});
});