私は事実上同じである多くのテストを持っています。DRYとスキャン容易性のために、テストを1つの関数に抽象化してから、いくつかのパラメーターを使用してその関数を呼び出します。次に、関数はit
仕様を呼び出してスイートに追加します。
スペックが他のスペックと同じように実行されbeforeEach
ず、共通関数で定義されたスペックの前に呼び出されないことを除いて、動作しているようです。
define(['modules/MyModule','jasmine/jasmine'], function(MyModule) {
describe('myModule', function() {
function commonTests(params) {
it('should pass this test OK', function() {
expect(true).toBe(true);
});
it('should fail because module is undefined', function() {
expect(module[params.method]()).toBe('whatever');
});
}
var module;
beforeEach(function() {
module = new MyModule();
});
describe('#function1', function() {
commonTests({
method: 'function1'
});
});
describe('#function2', function() {
commonTests({
method: 'function2'
});
});
});
});
これを行い、との機能を維持する方法はありbeforeEach
ますafterEach
か?
アップデート:
例を間違えたようです、ごめんなさい。失敗するケースは次のとおりです。
define(['modules/MyModule'], function(MyModule) {
function commonTests(params) {
it('will fail because params.module is undefined', function() {
expect(typeof params.module).toBe('object');
expect(typeof params.module[params.method]).toBe('function');
});
it('has a few tests in here', function() {
expect(true).toBe(true);
});
}
describe('MyModule', function() {
var module;
beforeEach(function() {
module = new MyModule();
});
describe('#function1', function() {
commonTests({
module: module,
method: 'function1'
});
});
describe('#function2', function() {
commonTests({
module: module,
method: 'function2'
});
});
});
});
最初の例のようにの現在の値を常に使用するのではなく、の値がmodule
への呼び出しの一部として保持されるため、失敗すると思います。そこに着いたら解決策を投稿します...commonTests
module