我正在研究一个使用Yeoman搭建脚手架的角应用程序。发生器配置了Karma / Jasmine,主控制器上有一个测试文件。我已经在主控制器中用我的应用程序所需的代码编写了代码。现在,我正在尝试使用生成的测试文件为我的代码编写测试,并且我遇到了问题。
这是我的main.controller.js(专注于一个功能)
(function () {
"use strict";
angular
.module("myApp")
.controller("MainController", function($log) {
var vm = this;
function calculateWorkspaceTabsWidth() {
vm.workspaceWidth = {
"width": 70 / vm.workspaces.length + "%"
};
});
})();
这是我的main.controller.spec.js(仅针对上述函数编写)
(function () {
"use strict";
describe('MainController', function () {
var vm;
beforeEach(module('myApp'));
beforeEach(function (_$controller_) {
vm = _$controller_('MainController');
vm.workspaces = ["One", "Two", "Three", "Four", "Five"];
});
it('should be a percentage', function () {
vm.calculateWorkspaceTabsWidth();
expect(vm.workspaceStyle.width).toEqual('14%');
});
});
})();
这是我在运行此测试时收到的错误消息。
TypeError:' undefined'不是一个对象(评估 ' vm.calculateWorkspaceTabsWidth&#39)
我做错了什么?
另外,如果此功能在范围内,我将如何以不同方式编写测试用例? (即:vm.calculateWorkspaceTabsWidth = function(){})
提前感谢您的帮助。
答案 0 :(得分:0)
您的calculateWorkspaceTabsWidth不在范围内,应为
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\post;
use App\comment;
use Auth;
class commentController extends Controller
{
public function index(post $post)
{
return response()->json($post->comments()->with('user')->latest()->get());
}
public function store(Request $request, post $post)
{
$comment = $post->comments()->create([
'body' => $request->body,
'user_id' => Auth::id()
]);
$comment = comment::where('id', $comment->id)->with('user')->first();
return $comment->toJson();
}
}
而不是
vm.calculateWorkspaceTabsWidth(){}
在您的控制器中。