- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题可以解决很多通用的解决方案,所以我会尝试用这样的方式来表达它。我有一种情况,我需要相同的 beforeEach
和 afterEach
代码块运行,但每次只需要更改一个变量(或几个)。
我的具体情况:我每次都需要从数据库中插入/删除。代码:
首先为测试设置临时表:
before(function(done) {
db.query('CREATE TEMPORARY TABLE tmp AS SELECT * FROM example_table', null, function(error) {
return done();
});
});
var vals = []
beforeEach(init_vals, function(done) {
mysql.query('INSERT INTO tmp (a, b) VALUES (?, ?)', init_vals, function(error, rows) {
return done();
});
});
// pass values [1, 2] to `beforeEach`
it('check value is in database', function(done) {
mysql.query('SELECT * FROM tmp WHERE a = ? AND b = ?', function(error, rows) {
vals = [1, 2];
expect(rows[0].a === vals.a);
expect(rows[0].b === vals.b);
return done(); // pass values
})
})
afterEach(function(done) {
mysql.query('DELETE FROM tmp WHERE a = ? AND b = ?', vals, function(error, rows) {
return done();
});
});
values
作为每个
it
的这些钩子(Hook)的变量测试?
最佳答案
it
是不可能的调用限制beforeEach
的数据Mocha 将在 it
之前运行的 Hook 打电话会看到。 it
call 可以影响在它之后运行的内容,但不会影响在它之前运行的内容。
我要做的只是将初始化代码移动到可以从测试中调用的函数中,并在每个测试中调用它。像这样的东西:
describe(function () {
// Record values we may need to clean after the test.
var to_clean;
function init(vals, cb) {
mysql.query('INSERT INTO tmp (a, b) VALUES (?, ?)', vals,
function(error, rows) {
// Record that we need to clean some values.
to_clean = vals;
cb(error);
});
}
it('check value is in database', function(done) {
var vals = [1, 2];
init(vals, function (error) {
if (error) {
done(error);
return;
}
mysql.query('SELECT * FROM tmp WHERE a = ? AND b = ?',
function(error, rows) {
if (error) {
done(error);
return;
}
// You need to catch these if you want a
// precise error report from
// Mocha. Otherwise, you get a vague
// timeout error.
try {
expect(rows[0].a === vals.a);
expect(rows[0].b === vals.b);
}
catch(e) {
done(e);
return;
}
done();
});
});
});
afterEach(function(done) {
if (to_clean) {
mysql.query('DELETE FROM tmp WHERE a = ? AND b = ?', to_clean,
function(error, rows) {
// Reset so that we don't try to clean
// obsolete data. Yes, we clear this even
// if there was an error.
to_clean = undefined;
done(error);
});
}
else {
// Nothing to clean, we're done.
done();
}
});
});
before
、
beforeEach
等)失败。如果测试失败,Mocha 将继续执行其他测试。如果钩子(Hook)失败,Mocha 认为这是测试套件的失败,并会跳过执行任何依赖于钩子(Hook)的操作。这是一个简单的例子:
describe("top", () => {
let fail = true;
beforeEach(() => {
fail = !fail;
if (fail) {
throw new Error("fail");
}
});
it("one", () => {});
it("two", () => {});
it("three", () => {});
});
describe("top 2", () => {
it("one", () => {});
it("two", () => {});
it("three", () => {});
});
top
✓ one
1) "before each" hook for "two"
top 2
✓ one
✓ two
✓ three
4 passing (10ms)
1 failing
1) top "before each" hook for "two":
Error: fail
at Context.beforeEach (test2.js:6:19)
describe
中看到 block ,只运行了前两个测试。尽快
beforeEach
失败,Mocha 跳过
describe
中的其余测试 block ,但第二个可以运行,因为它不依赖于失败的钩子(Hook)。
关于javascript - Mocha - 将变量从 `beforeEach` 传递到 `afterEach` 和 `it`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975424/
是否保证在内部 beforeEach 开始之前完成外部 beforeEach? let qux; beforeEach(() => { // // other synchronous code
我正在尝试编写一个需要使用特定设置的测试类。当只有 1 个设置时,使用 @BeforeEach 很容易: @BeforeEach public void setup() { // my setup
有没有办法只针对某些测试(“it” block )不执行 beforeEach 函数。假设我有 10 个 it block ,我不希望为其中两个 block 执行 beforeEach。可能吗? 最佳
只是想知道当您使用 object 接口(interface)在 intern 中嵌套功能测试时 beforeEach 是如何工作的。例如 registerSuite({ name: 'Befo
在Using after or afterEach hooks ,建议在beforeEach或before中清理server/db状态。我理解基本原理,但我认为文本缺少一些实际用例。这是一个我不知道如
我得到 ReferenceError: initialState is not defined 当我在 beforeEach(()=> {... 中将 initialState 声明为 const 时
所以我的测试中有这两种情况。第一个工作正常,在第二个中,我尝试在外部提取 beforeEach 声明,但它失败了,但我不明白为什么。这是一个简单的情况,基本上我尝试定义一个数组并对其进行循环,以便使用
使用 Protractor 5.1.2 和 Jasmine2 来描述测试用例,如何获取在 beforeEach 方法中运行的当前测试用例/规范? 我想根据我正在运行的测试用例进行一些不同的设置。我不想
我有两个 Mocha 测试文件,每个文件都有自己的 beforeEach 函数。每个文件中的 beforeEach 对所有测试用例运行。用代码更好地解释: 用户.test.js: beforeEach
我在使用 Jasmine (+Karma + Webpack) 时遇到问题 我将测试范围缩小到 beforeEach 语句,而不是在运行 it block 之前等待执行 done() 回调。 编辑:
刚开始使用 Jasmine 并按照 the Jasmine website 上的说明进行操作对于异步测试,我注意到从未调用过 beforeEach 函数。 知道为什么不吗?我在网络上的任何地方都找不到
我正在使用 Protractor/Jasmine 编写 UI 测试。我希望在我所有的测试用例中执行一个特定的任务,即。读取跨度 (id="mytxt")。所以,我想在 beforeEach 中完成这个
我正在编写一个具有以下 jasmine 规范的 Rails 应用程序: describe "buttons", -> beforeEach -> loadFixtures("foo.htm
我一直在学习 AngularJS 教程,但在 beforeEach 的一项端到端测试中遇到了一个奇怪的问题。对于上下文,我目前在 step 3 的实验部分。 .测试代码在这里: 'use strict
谁能告诉我下面的 Jasmine 代码的区别,如果很愚蠢请原谅我 describe('Testing a Hello World controller', function() { var $
当我使用 beforeEach 异步时,我遇到了一种情况,并且我的规范中有一些测试。我看到 beforeEach 为每个运行的测试调用,而不是在所有测试之前只调用一次 - 我做错了什么?这是我的代码:
我知道为了测试 API 端点,应该模拟 xhtml 请求,但现在我想用真正的 API 来测试它。 我想做的事情: 打开一个页面,单击“连接”按钮,然后等待最多 10 秒,以便某个元素的 innerte
我正在尝试使用sequelize编写测试,并且我想在每次测试之前截断所有表。如果可能的话,我不想在每个测试文件中编写或运行它。有谁知道有什么方法可以做到这一点吗? 看来 Jest 应该支持类似的东西。
我正在使用 Jasmine 编写测试。 我有几个测试文件,每个文件都有一个beforeEach,但它们完全一样。 我如何为他们提供一个global beforeEach? 最佳答案 x1a4 的回答让
Mocha之间具体有什么区别?的 before() 和 beforeEach()? (after() 和 afterEach() 的相同问题。) 我假设 before() 每个 describe()
我是一名优秀的程序员,十分优秀!