gpt4 book ai didi

Ember.js属性初始化说明

转载 作者:行者123 更新时间:2023-12-02 22:16:20 25 4
gpt4 key购买 nike

我刚刚开始使用 Ember,在编写一些 jasmine 测试时遇到了这个问题。

假设我有以下代码

App.RecipeController = Ember.Controller.extend
selectedGrain: null
amount: null
recipeGrains: Ember.A()

totalWeight: (->
weight = 0
@get('recipeGrains').forEach (grain) ->
weight += grain.get('weight')
weight
).property('recipeGrains.@each')

addGrain: ->
grain = Ember.Object.create
name: @get('selectedGrain').get('name')
weight: parseFloat(@get('amount'))
@get('recipeGrains').pushObject(grain)
@set('selectedGrain', null)
@set('amount', null)

我编写了以下测试。

describe("Controllers", function() {
describe("NewRecipeController", function() {
var controller;

beforeEach(function() {
controller = Brewery.NewRecipeController.create();
});

it("calculates the correct total weight", function() {
var grains = controller.get('recipeGrains');
grains.pushObject(Ember.Object.create({weight: 4.0}));
grains.pushObject(Ember.Object.create({weight: 3.2}));
expect(controller.get('totalWeight')).toEqual(7.2);
});

it ("adds grains based on its selected grain", function() {
controller.set('selectedGrain', Ember.Object.create({name: "Wheat"}));
controller.set('amount', '10.2');
controller.addGrain();
expect(controller.get('totalWeight')).toEqual(10.2);
});
});
});

我预计两个测试都会通过,但第二个测试失败并显示消息

Expected 17.4 to equal 10.2.

第一个测试的状态似乎溢出到了第二个测试。请比我更有知识的人解释一下 Ember 如何处理 Controller 状态以及为什么会发生这种情况?

谢谢!

最佳答案

测试失败的原因是第 4 行的默认值初始化。

您应该在 init 中设置初始值App.RecipeController中的方法或在实例创建时传递值:

App.RecipeController = Ember.Controller.extend
init: ->
@set 'recipeGrains', Ember.A()

controller = Brewery.NewRecipeController.create({ recipeGrains: Ember.A() });

您应该查看section 6 of this article .

关于Ember.js属性初始化说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com