Teo*_*ahi 3 javascript jasmine
我正在使用 jasmine.version "2.2.0"。在我的非常基本的测试中,我得到“必须在函数或规范中创建间谍”。有什么问题?请看下面的代码;
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<img src="../Content/jasmine/jasmine_favicon.png" />
<link href="../Content/jasmine/jasmine.css" rel="stylesheet" />
<script src="../Scripts/jasmine/jasmine.js"></script>
<script src="../Scripts/jasmine/jasmine-html.js"></script>
<script src="../Scripts/jasmine/boot.js"></script>
</head>
<body>
<script id="myRealCodeBase" type="text/javascript">
var objectUnderTest = {
someFunction: function (arg1, arg2) {
var result = arg1 + arg2;
return result;
}
};
</script>
<script id="testScripts" type="text/javascript">
spyOn(objectUnderTest, 'someFunction');
//Call the method with specific arguments
objectUnderTest.someFunction('param1', 'param2');
//Get the arguments for the first call of the function
var callArgs = objectUnderTest.someFunction.call.argsFor(0);
console.log(callArgs);
//displays ['param1','param2']
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 6
好吧,您没有创建测试(规范)或使用 before 函数,所以这一定是问题所在。
您应该将测试包装在套件和规范中,因为它们在 jasmine 中被称为,如下所示:
describe('A simple test', function () {
beforeEach() {
// callthrough is used to call the actual function, and not just mocking the call
spyOn(objectUnderTest, 'someFunction').and.callThrough();
};
it('should add two numbers', function () {
var sum = objectUnderTest.someFunction(1, 2);
expect(sum).toEqual(3);
expect(objectUnderTest.someFunction).toHaveBeenCalled();
});
});
Run Code Online (Sandbox Code Playgroud)
这是一个使用茉莉花的简单测试。它非常简单,但需要一些结构才能工作。这是一个非常强大的框架,一旦你掌握了它的窍门,编写测试就会变得非常简单和有趣 =)
| 归档时间: |
|
| 查看次数: |
5162 次 |
| 最近记录: |