不同功能的摩卡测试用例
mocha test cases for different functions
我正在尝试为没有返回语句的函数编写测试用例。你能告诉我怎么做吗?我已经编写了测试用例,但我不确定它是否正确
/**
* Load sports.js script. That script will execute an analytics sportsView immediately.
* @returns {undefined}
*/
export function loadsports() {
if (typeof sports === 'undefined') {
let sportsElement = document.createElement('script');
sportsElement.src = '~^sports, sports.js~^';
sportsElement.async = true; // the script will be executed asynchronously as soon as it is available
let firstSportsElement = document.getElementsByTagName('script')[0];
firstSportsElement.parentNode.insertBefore(sportsElement, firstSportsElement);
}
}
/**
* Record a sports view in analytics using the data available in aports.ent.sportsData object
* @returns {undefined}
*/
export function sportsView() {
let sportsData = getSportsData();
if (isSportsAvailable() && sportsData) {
sports.view(sportsData);
}
}
/* test case */
describe('loadsports test cases', function() {
it('loadsports method', function() {
console.log("loadsports method");
// sportsAnalytic.sportsView();
expect(true).to.be.true;
});
});
您的loadSports
函数具有添加script
标签的效果。要验证该行为,请执行以下操作:
describe('when sports is not loaded', function () {
it('adds a script element', function () {
loadSports()
let sportsElement = document.querySelector(/* target the script tag that should have been appended */)
expect(sportsElement).to.exist
})
})
你的sportsView
函数具有以下效果:读取getSportsData()
,检查是否isSportsAvailable()
,然后调用sports.view
。如果它显式获取其依赖项会更好,以便您可以在测试期间注入它们:
// revised
export function sportsView(getSportsData, isSportsAvailable, sports) {
let sportsData = getSportsData()
if (isSportsAvailable() && sportsData) {
sports.view(sportsData)
}
}
现在,您可以将虚假实现作为参数传递给sportsView
以控制其行为。
import { expect } from 'chai'
import sportsView from 'path/to/sportsView'
describe('sportsView', function () {
describe('when sports and sportsData is available', function () {
it('adds the data to the sports view', function (done) {
let someData = {/* some data */}
let isSportsAvailable = function () { return true }
let getSportsData = function () { return someData }
let sports = {
view: function(data) {
expect(data).to.equal(someData)
done()
}
}
sportsView(getSportsData, isSportsAvailable, sports)
})
})
describe('when sports is not available...', function () {}) // etc
})
拥有大量的全局状态使得测试代码变得非常困难或不可能。将依赖项注入作为包含和控制代码效果的模式进行检查。
祝你好运!
相关文章:
- 你好,这是测试用例,我必须在函数中传递n个参数
- 如何为以下角度函数编写单元测试用例
- 是否有任何开源web应用程序具有良好的QUnit(或JSUnit)测试用例
- 因果报应并没有执行测试用例
- 如何将 XML 文件包含在摩卡测试用例中
- 运行茉莉花测试用例
- 如何阻止量角器在失败时运行进一步的测试用例
- 从FORM访问HTML元素的JavaScript函数的单元测试用例
- Regex单词边界(退格)测试用例
- 针对每个场景使用Jasmine测试用例
- JavaScript/jQuery-脚本不起作用-添加&删除类,合并数组-测试用例
- 你如何为 HTML 输出编写测试用例
- 如何在多个文件中设置摩卡测试用例的执行顺序
- 如何在 eclipse 中为 angularjs 测试和创建测试用例
- Casperjs 多个测试用例
- 不同功能的摩卡测试用例
- 量角器在不使用browser.sleep的情况下编写更干净的测试用例
- 为什么jquery正则表达式每次返回不同的测试用例
- 如何在摩卡的测试用例中调用另一个测试用例
- 函数内 Restangular 的茉莉花测试用例