我希望能够在 Matlab中编写类似 jasmine的测试。所以像
expect(myfibonacci(0)).toBe(0);
expect(myfibonacci(5)).toBe(15);
expect(myfibonacci(10)).toBe(55);
我尝试使用两种策略来实现这一点:
(1)第一种策略使用结构体
expect = @(actual_value) struct('toBe', @(expected_value) assert(actual_value == expected_value));
(真正的实现不会只是调用assert)
但是,这不起作用:
expect(1).toBe(1); % this triggers a syntax error
??? Improper index matrix reference.
% this will work:
x = expect(1);
x.toBe(1);
(2)我尝试的第二种策略是使用一个类:
classdef expect
properties (Hidden)
actual_value
end
methods
function obj = expect(actual_value)
obj.actual_value = actual_value;
end
function obj = toBe(obj, expected_value)
assert(obj.actual_value == expected_value);
end
end
end
乍一看,这看起来不错:您可以在控制台中运行
expect(1).toBe(1);
但是,不是在控制台中而是在脚本中运行它会给出
??? Static method or constructor invocations cannot be indexed.
Do not follow the call to the static method or constructor with
any additional indexing or dot references.
Error in ==> test at 1
expect(1).toBe(1);
这里有什么方法可以让这个想法在 matlab 中发挥作用吗?