我有一个ember-cli 0.2.7使用Ember.js 1.12.0应用程序与一段代码看起来像:
controllers/cart.js
import Ember from 'ember';
export default Ember.Controller.extend({
footwearInCart: Ember.computed('model.@each.category', function() {
return this.get('model').any(product => product.get('category').includes('Footwear'));
})
});
Run Code Online (Sandbox Code Playgroud)
它遍历模型中的所有对象,如果其类别属性中包含"鞋类",则返回true.
我试图像这样测试它:
tests/unit/controllers/cart-test.js
import { moduleFor, test } from 'ember-qunit';
import Ember from 'ember';
var products = [Ember.Object.create({name: 'shoe', category: 'Footwear', subTotal: 10}), Ember.Object.create({name: 'shirt', subTotal: 20})];
var model = Ember.ArrayProxy.create({
content: Ember.A(products)
});
moduleFor('controller:cart', {
beforeEach() {
this.controller = this.subject();
}
});
test('footwearInCart property works', function(assert) {
this.controller.set('model', model);
assert.equal(this.controller.get('footwearInCart'), true, 'The footwearInCart function …Run Code Online (Sandbox Code Playgroud) 来自我的controllers/cart.js的代码:
export default Ember.Controller.extend({
cartTotal: Ember.computed('model.@each.subTotal', function() {
return this.model.reduce(function(subTotal, product) {
var total = subTotal + product.get('subTotal');
return total;
}, 0);
})
)};
Run Code Online (Sandbox Code Playgroud)
此计算属性循环遍历模型中的所有元素,添加subTotal属性的所有值,返回a cart total.
购物车,test.js
import { moduleFor, test } from 'ember-qunit';
import Ember from 'ember';
moduleFor('controller:cart', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
test('it exists', function(assert) {
var controller = this.subject();
assert.ok(controller);
});
test('cartTotal function exists', function(assert) {
var controller = this.subject(); …Run Code Online (Sandbox Code Playgroud) ember-cli ×2
ember.js ×2
ecmascript-6 ×1
ember-qunit ×1
javascript ×1
phantomjs ×1
qunit ×1
unit-testing ×1