【发布时间】:2014-08-13 07:11:39
【问题描述】:
谁能告诉我我的方法是否合适?
我想知道我们正在使用的 api 是否按设计工作以及何时发生变化,因此我们知道它已经发生了变化,而无需深入研究所有 code 逻辑。我们将提供一组参数,我们期望得到一定的结果,以便我的单元测试运行良好。
User.login({email: username, password: password);
我的模型中的上述方法实际上命中了 API 并返回了一个响应。我想检查我的模型的登录方法是否按预期工作。
下面是我的approach。
我在我的模型中使用所需的参数和预期的响应来存根我的登录方法,以避免点击 api,然后期待 login 方法与 derive 相同的响应。
我正在使用 ActiveRestClient。
下面是我的模型
class User << ActiveRestClient::Base
get :all, '/user'
get :find, '/user/:id'
end
以下是我的规格
require 'spec_helper'
describe User do
let(:username) {"test@test.com"}
let(:password) {"123"}
context "when signing in" do
let(:response) {{token: "123"}.to_json}
it "should sign in with valid input" do
allow(User).to receive(:login).with({email: username, password:
password}).and_return(response)
expect(User.login({email: username, password: passwor})).to eq(response)
end
end
end
谁能告诉我我的方法是否合适?
【问题讨论】:
-
不,很抱歉,您的方法不好。因为它不测试一行代码。您的规范唯一要测试的是
User.login存根返回您告诉它返回的内容。
标签: ruby-on-rails ruby ruby-on-rails-3 unit-testing rspec