作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 JavaScript 创建了一个非常简单的账单分割应用程序,并使用 Jasmine 进行测试。
我正在尝试测试这个计算
函数:
function Bill_Splitter(){
this.amount = 0;
this.cost = 0;
this.tip = 0;
this.diners = 0;
};
Bill_Splitter.prototype.calculate = function(){
this.cost = parseInt(document.getElementById("cost").value);
this.tip = parseInt(document.getElementById("tip").value);
this.diners = parseInt(document.getElementById("diners").value);
var amount = (cost + tip) / diners
return this.amount += amount
document.getElementById("amount").innerHTML = amount
}
但是,我不知道如何测试用户输入的 HTML 表单中的数值(成本、小费和值(value))。
到目前为止我的 Jasmine 测试是:
describe('calculate', function() {
const form = document.createElement('form');
form.innerHTML= `<input type="text" id="cost" value=2 />
<input type="text" id="tip" value=2 />
<input type="text" id="diners" value =2 />
<span id="amount"></span>
`;
document.body.appendChild(form)
splitter.calculate()
expect(splitter.amount).toEqual(30)
});
});
有人可以帮忙吗?谢谢! :)
最佳答案
您可以像在函数构造函数中使用 this.amount 一样创建属性
function Bill_Splitter(){
this.amount = 0;
this.cost = 0;
this.diners = 0;
this.tip = 0;
};
this.cost = parseInt(document.getElementById("cost").value);
this.tip = parseInt(document.getElementById("tip").value);
this.diners = parseInt(document.getElementById("diners").value);
describe('calculate', function() {
it('calculates the amount due', function(){
splitter.calculate()
expect(splitter.amount).toEqual(30)
expect(splitter.tip).toEqual(###)
});
});
如果您的测试找不到这些 html 元素,您可以将它们添加到您的测试中:
it('calculate', function(){
const form = document.createElement('form');
form.innerHTML= `<input type="text" id="cost" value="2" />
<input type="text" id="tip" value="2" />
<input type="text" id="dinners" value ="2" />
<span id="amount"></span>
`;
document.body.appendChild(form)
splitter.calculate()
expect(splitter.amount).toEqual(30)
expect(splitter.tip).toEqual(###)
})
最终代码:
function Bill_Splitter(){
this.amount = 0;
this.cost = 0;
this.tip = 0;
this.diners = 0;
};
Bill_Splitter.prototype.calculate = function(){
this.cost = parseInt(document.getElementById("cost").value);
this.tip = parseInt(document.getElementById("tip").value);
this.diners = parseInt(document.getElementById("diners").value);
this.amount += (this.cost + this.tip) / this.diners;
document.getElementById("amount").innerHTML = this.amount
}
关于javascript - 尝试用 Jasmine 测试 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957322/
我是一名优秀的程序员,十分优秀!